# Hugging Face ile oturum aç

Herhangi bir web sitesinde veya uygulamada **"HF ile Giriş Yap"** akışı oluşturmak için HF OAuth / OpenID connect akışını kullanabilirsiniz.

Bu, kullanıcıların bu benzeri bir düğmeye tıklayarak HF hesaplarıyla web sitenize veya uygulamanıza giriş yapmasını sağlayacaktır:

![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-xl-dark.svg)

Bu düğmeye tıkladıktan sonra kullanıcılarınıza, uygulamanızı yetkilendirmek için bir izin penceresi gösterilir:

![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/oauth-accept-application.png)

## Bir oauth uygulaması oluşturma

Uygulamanızı [ayarlar](https://huggingface.co/settings/applications/new) bölümünüzde oluşturabilirsiniz:

	
	

### Organizasyona ait OAuth uygulamaları

> [!WARNING]
> Bu özellik, Team & Enterprise planlarının bir parçasıdır.

OAuth uygulamaları, bireysel bir hesap yerine bir organizasyon tarafından da sahip tutulabilir. Ekipçe birlikte sürdürdüğünüz uygulamalar için bu faydalıdır, çünkü uygulamalar tek bir üyenin hesabına bağımlı kalmak yerine organizasyonla birlikte kalır.

Organizasyon yöneticileri, organizasyon ayarlarındaki **OAuth Apps** bölümünden (`https://huggingface.co/organizations/<your-org>/settings/applications`) organizasyona ait uygulamaları oluşturabilir ve yönetebilir. Organizasyonun tüm yöneticileri uygulamayı düzenleyebilir, client secret değerini döndürebilir veya silebilir. Uygulama listesi, her uygulamanın hangi üye tarafından oluşturulduğunu gösterir ve uygulamalardaki değişiklikler organizasyonun [audit logs](./audit-logs#oauth-apps) kaydına işlenir.

	
	

Aynı sayfa, yapılandırılmışsa, organizasyonun [Token Exchange uygulamasını](#token-exchange-for-organizations-rfc-8693) da listeler.

Kendi sahibi olduğunuz mevcut bir OAuth uygulamasını, yöneticisi olduğunuz bir organizasyona, uygulamanın ayarlar sayfasındaki **Organizasyona aktar** bölümünden de aktarabilirsiniz. Organizasyonun bir Team veya Enterprise planında olması gerekir. Aktarımın ardından uygulama, organizasyonun tüm yöneticileri tarafından yönetilir. Uygulamanın istemci kimliği, istemci gizli anahtarı ve mevcut yetkilendirmeleri ile jetonları aynı kaldığından, web siteniz veya uygulamanız değişiklik yapılmadan çalışmaya devam eder. Ayarlar sayfasından aktarım işlemi geri alınamaz.

	
	

### Herkese açık OAuth uygulamaları (gizli anahtar yok)

Müşteri gizli anahtarı olmadan OAuth uygulamaları oluşturabilir veya kullanabilirsiniz. Bu, bir gizli anahtarı saklamanın pratik olmadığı yerel uygulamalar, CLI'lar veya diğer bağlamlar için faydalıdır.

- **Uygulama oluşturulurken**: Yeni bir OAuth uygulaması oluştururken, gizli anahtar olmadan oluşturmayı seçebilirsiniz.
- **Oluşturma sonrası**: Mevcut bir uygulama için uygulama ayarlarında istemci gizli anahtarını silebilirsiniz. Uygulama bu durumda herkese açık bir uygulama olarak çalışır.

Herkese açık uygulamalar yalnızca istemci kimliğiyle kimlik doğrulama yapar (ör. PKCE ile cihaz kodu veya yetkilendirme kodu akışlarında). Bir sırra sahip olan uygulamalar, gerektiğinde hâlâ sırrı kullanabilir (ör. jeton istekleri için `Authorization: Basic`).

### Yönlendirme URİ'leri

Bir yetkilendirme isteğinde gönderilen `redirect_uri`, uygulamanızda kayıtlı yönlendirme URI'lerinden biriyle birebir eşleşmelidir.

Loopback yönlendirme URI'leri tek istisnadır: `http` şemasını kullanan ve bir loopback ana makineyi (`localhost`, `127.0.0.1` veya `[::1]`) içeren URI'ler için, istek anında her diğer bileşen kayıtlı bir URI ile eşleştiği sürece herhangi bir port kabul edilir. Bu, [RFC 8252 §7.3](https://datatracker.ietf.org/doc/html/rfc8252#section-7.3) / OAuth 2.1'e uygun olarak, yerel uygulamaların, CLI'ların ve MCP istemcilerinin `http://localhost/callback` gibi port içermeyen bir URI kaydedip ardından işletim sisteminin atadığı herhangi bir geçici portta (ör. `http://localhost:49282/callback`) dinlemesini sağlar.

Dikkat edilmesi gereken birkaç nokta:

- İstisna yalnızca `http` şeması için geçerlidir. `https` ve özel şemalı (ör. `myapp://callback`) yönlendirme URI'leri her zaman, port dahil olmak üzere, tam bir eşleşme gerektirir.
- Loopback ana bilgisayarları bireysel olarak eşleştirilir: `http://localhost:49282/callback` için yapılan bir istek, kayıtlı `http://127.0.0.1/callback` ile eşleşmez. Uygulamanız her ikisini de kullanabilirse her ikisini de kaydedin.
- Yalnızca port farklı olabilir. Yol, sorgu ve kullanıcı bilgileri yine de tam olarak eşleşmelidir.

### Spaces'te barındırıyorsanız

> [!TIP]
> Uygulamanızı Spaces üzerinde barındırıyorsanız, akışı uygulamak çok daha kolay olacaktır (ve Gradio'ya doğrudan yerleşiktir); [Spaces OAuth kılavuzumuza](https://huggingface.co/docs/hub/spaces-oauth) göz atın.

### Otomatik oauth uygulaması oluşturma

Hugging Face, web siteniz için bir oauth uygulamasını otomatik bir şekilde oluşturmanıza olanak tanıyan CIMD yani [Client ID Metadata Documents](https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/) özelliğini destekler:

- Web sitenize aşağıdaki JSON'u döndüren bir uç nokta ekleyin: `/.well-known/oauth-cimd`

```json
{
  client_id:                  "[your website url]/.well-known/oauth-cimd",
  client_name:                "Your Website",
  redirect_uris:              ["[your website url]/oauth/callback/huggingface"],
  token_endpoint_auth_method: "none",
  logo_uri:                  "https://....", // optional
  client_uri:                 "[your website url]", // optional
}
```

- Müşteri kimliği olarak `"[your website url]/.well-known/oauth-cimd"` adresini ve kimlik doğrulama mekanizması olarak PCKE'yi kullanın

Yerel bir portta yetkilendirme kodunu alan yerel uygulamalar ve MCP istemcileri, `redirect_uris` içinde port içermeyen döngüsel geri (loopback) URI'lerini listeleyebilir, örneğin `["http://localhost/callback", "http://127.0.0.1/callback"]` — bkz. [Yönlendirme URI'leri](#redirect-uris).

Bu, geçici ortamlar veya MCP istemcileri için özellikle faydalıdır. Hugging Chat'te bir [uygulama örneği](https://github.com/huggingface/chat-ui/pull/1978) bulun.

## Cihaz kodu OAuth

Device code flow, kullanıcıların uygulamayı bir cihazda (ör. bir CLI) onaylamasına, kısa bir kodu başka bir cihazda (ör. bir telefon veya tarayıcı) girerek izin vermesine olanak tanır. Uygulamanın çalıştığı cihazda yönlendirme URI'si veya tarayıcı gerekmez.

![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/oauth-device-first-step.png)

![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/oauth-device-second-step.png)

### Örnek bir betikle test etme

Aşağıdaki betik ile bir cihaz kodu OAuth uygulamasını test edebilirsiniz. `<Client ID>` yerini uygulamanızın istemci kimliği ile değiştirin. **halka açık uygulamalar** (gizli anahtar yok) için betik olduğu gibi çalışır. **gizli anahtarı olan uygulamalar** için hem cihaz hem de token isteklerine `Authorization: Basic` başlığı ekleyin (`client_id:client_secret` değerinin Base64 kodu).

```sh
#!/bin/bash
CLIENT_ID="<Client ID>"

# Step 1: Get device code
RESPONSE=$(curl -s -X POST https://huggingface.co/oauth/device \
  -d "client_id=$CLIENT_ID")

DEVICE_CODE=$(echo $RESPONSE | jq -r '.device_code')
USER_CODE=$(echo $RESPONSE | jq -r '.user_code')
VERIFICATION_URI=$(echo $RESPONSE | jq -r '.verification_uri')

echo "Device Code: $DEVICE_CODE"
echo "User Code: $USER_CODE"
echo ""
echo "Open: ${VERIFICATION_URI}"
echo "Enter the user code: $USER_CODE"
echo ""
read -p "Press Enter after authorizing..."

# Step 3: Get token
curl -X POST https://huggingface.co/oauth/token \
  -d "grant_type=urn:ietf:params:oauth:grant-type:device_code" \
  -d "device_code=$DEVICE_CODE" \
  -d "client_id=$CLIENT_ID"
```

> [!NOTE]
> Müşteri sırrı (client secret) olan OAuth uygulamaları için, hem cihaz kodu isteğinde hem de jeton isteğinde `Authorization: Basic` başlığı (Base64 kodlu `client_id:client_secret` ile) ekleyin.

## Şu anda desteklenen kapsamlar

Şu anda desteklenen kapsamlar şunlardır:

- `openid`: Erişim belirtecinin yanı sıra bir kimlik belirtecini alın.
- `profile`: Kullanıcının profil bilgilerini (kullanıcı adı, avatar vb.) okur
- `email`: Kullanıcının e-posta adresini okur.
- `read-billing`: Kullanıcının bir ödeme yöntemi tanımlayıp tanımlamadığını öğrenin.
- `read-memberships`: Kullanıcının hangi kuruluşlara üye olduğunu ve her birindeki rolünü okur. Bu, kuruluşların ayarlarına veya kaynaklarına erişim yetkisi vermez.
- `read-repos`: Kullanıcının kişisel depolarını okur.
- `gated-repos`: Kullanıcının erişim izni verilen herkese açık gated depolarının içeriğini okur. `read-repos`'un aksine, bu özel depolara erişim sağlamaz.
- `contribute-repos`: Depolar oluşturur ve bu uygulama tarafından oluşturulanlara erişir. Ek izinler verilmedikçe başka depolara erişemez.
- `write-repos`: Kullanıcının kişisel depolarını oku ve yaz.
- `manage-repos`: Kullanıcının kişisel depolarını, bunları oluşturma ve silme dahil olmak üzere, tamamen yönetir.
- `read-collections`: Kullanıcının kişisel koleksiyonlarını okur.
- `write-collections`: Kullanıcının kişisel koleksiyonlarını okuma ve yazma, bunları oluşturma ve silme.
- `inference-api`: Kullanıcı adına [Inference Providers](https://huggingface.co/docs/inference-providers/index) üzerinden çıkarım istekleri yapın.
- `read-endpoints`: Kullanıcının [Inference Endpoints](https://huggingface.co/docs/inference-endpoints/index) bileşenlerini görüntüler ve kullanıcının adına bu bileşenlere çıkarım istekleri gönderir.
- `write-endpoints`: Kullanıcının Inference Endpoints'lerini, bunların oluşturulması ve silinmesi dahil olmak üzere yönetir. `read-endpoints` erişimini içerir.
- `jobs`: [jobs](https://huggingface.co/docs/huggingface_hub/main/en/guides/jobs) çalıştır
- `webhooks`: [webhook](https://huggingface.co/docs/huggingface_hub/main/en/guides/webhooks) yönetimi
- `write-discussions`: Kullanıcı adına tartışma ve Pull Request açma ve tartışmalarla etkileşim kurma (reaksiyonlar, yorum gönderme/düzenleme, tartışmaları kapatma, ...). Özel depolarda Pull Request açmak için ayrıca `read-repos` kapsamını da istemeniz gerekir.

Diğer tüm bilgiler [OpenID metadata](https://huggingface.co/.well-known/openid-configuration) içinde mevcuttur.

> [!WARNING]
> Ek kapsamlara ihtiyacınız olursa lütfen bizimle iletişime geçin.

## Organizasyon kaynaklarına erişim

Varsayılan olarak, oauth uygulamasının organizasyon kaynaklarına erişmesi gerekmez.

Ancak `read-repos` veya `read-billing` gibi bazı kapsamlar, kuruluşlara da uygulanır.

Kullanıcı, uygulamayı yetkilendirirken erişim izni vereceği kuruluşları seçebilir. Belirli bir kuruluşa erişim gerekiyorsa, OAuth yetkilendirme URL'sine `orgIds=ORG_ID` sorgu parametresi olarak ekleyebilirsiniz. Kuruluş kimliği, userinfo yanıtındaki `orgs[].sub` alanında bulunur.

## Organizasyon üyeliğini gruplar olarak senkronize etme

userinfo yanıtı (`https://huggingface.co/oauth/userinfo`) bir `groups` iddiası içerir: kullanıcının üye olduğu kuruluşların adları, bir dizi dize olarak.

```json
{
  "sub": "...",
  "preferred_username": "my-username",
  "groups": ["my-org", "another-org"],
  "orgs": [ ... ]
}
```

Birçok OIDC istemcisi (ör. Discourse, Grafana, Argo CD, Vault, Kubernetes), dizel bir dize dizisi içeren bir iddiadan (claim) grup üyeliğini senkronize edebilir ve genellikle `groups` iddiasıyla yapılandırılır. Hugging Face kuruluşlarını uygulamanızdaki roller veya gruplara eşlemek için bunu kullanabilirsiniz. Her kuruluşun ayrıntıları (ID, rol vb.) için bunun yerine `orgs` alanını kullanın.

Dikkat edilmesi gereken birkaç nokta:

- `groups` iddiası yalnızca userinfo uç noktası tarafından döndürülür, ID belirtecinde yer almaz.
- Organizasyon adlarını, kimlik numaralarını değil içerir. Bir organizasyon yeniden adlandırılırsa, eski adını kullanan eşlemeler eşleşmeyi durdurur.
- Kaynak grupları dahil değildir. Ücretli plandaki organizasyonlar için kullanıcının kaynak grupları ve rolleri `orgs[].resourceGroups` içinde listelenir.

## Marka

Düğme için kendi tasarımınızı kullanmak serbestsiniz. Aşağıda, nazikçe sağlanan bazı SVG görselleri bulunmaktadır.

Markdown veya HTML'de entegre etmek için açıklamalı [rozetlerimizi](https://huggingface.co/datasets/huggingface/badges#sign-in-with-hugging-face) inceleyin.

[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-sm.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)
[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-sm-dark.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)

[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-md.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)
[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-md-dark.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)

[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-lg.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)
[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-lg-dark.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)

[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-xl.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)
[![Sign in with Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-xl-dark.svg)](https://huggingface.co/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile&state=STATE)

## Kuruluşlar için Token Değişimi (RFC 8693)

> [!WARNING]
> Bu özellik, Enterprise planının bir parçasıdır.

Token Exchange, kuruluşların üyeleri için etkileşimli kullanıcı onayı gerektirmeden programatik olarak erişim belirteçleri (access token) oluşturmasına olanak tanır. Bu özellik, kuruluş üyeleri adına Hugging Face kaynaklarına erişmesi gereken dahili araçlar, otomasyon hatları ve kurumsal entegrasyonlar oluşturmak için özellikle faydalıdır.

> [!TIP]
> Eğer yalnızca CI/CD iş akışından (GitHub Actions, GitLab CI, CircleCI, …) anahtarsız kimlik doğrulamasına ihtiyacınız varsa — üye başına token yayınlama olmadan — lütfen [Trusted Publishers](./trusted-publishers) bölümüne bakın. Bu bölüm de `/oauth/token` kullanır ancak konu token olarak CI sağlayıcınız tarafından oluşturulan bir OIDC `id_token` alır (Enterprise planı gerekmez, istemci kimlik bilgileri gerekmez).

Bu özellik, token değişim senaryoları için standart bir protokol olan [RFC 8693 - OAuth 2.0 Token Exchange](https://www.rfc-editor.org/rfc/rfc8693.html)'i uygular.

### Kullanım senaryoları

Token Exchange, kuruluşunuzun aşağıdaki durumlarda ihtiyaç duyduğu senaryolar için tasarlanmıştır:

- **İç platformlar oluşturun**: Her kullanıcının manuel olarak kimlik doğrulaması yapmasını gerektirmeden, ekip üyeleriniz adına Hugging Face kaynaklarına erişen panolar veya portallar oluşturun.
- **CI/CD hatlarını otomatikleştirin**: Kuruluş depolarına modeller veya veri kümeleri göndermesi gereken otomatik iş akışları için kısa ömürlü, kapsamı daraltılmış jetonlar oluşturun.
- **Kurumsal kimlik sistemleriyle entegre edin**: Mevcut kimlik sağlayıcınızı, dahili kullanıcı dizininize dayalı olarak token yayımlayarak Hugging Face ile köprüleyin.
- **Özel erişim kontrolleri uygulayın**: Kurumunuzun iç politikalarına göre belirli kapsamlara sahip jetonlar veren bir ara katman (middleware) oluşturun.

### Nasıl çalışır

1. Organizasyonunuz, `token-exchange` yetkisine sahip bir OAuth uygulamasına bağlıdır.
2. Arka uç hizmetiniz, bu OAuth uygulamasıyla kimlik doğrulamasını istemci kimlik bilgileri (client credentials) kullanarak gerçekleştirir.
3. Hizmetiniz, belirli bir organizasyon üyesi (e-posta ile tanımlanır) için bir erişim jetonu ister.
4. Hugging Face, kullanıcının organizasyonunuzun bir üyesi olduğunu doğrular ve kapsamlı bir token yayar.
5. Verilen jeton yalnızca kuruluşunuzun kapsamındaki kaynaklara erişebilir.

### Ön koşullar

Token Exchange'i kullanmak için, `token-exchange` yetkisine sahip, organizasyonunuza bağlı bir OAuth uygulamasına ihtiyacınız vardır. Organizasyonunuz için uygun bir OAuth uygulaması oluşturmak üzere Hugging Face destek ekibiyle iletişime geçin.

Yapılandırıldıktan sonra şunları alacaksınız:
- Bir **Client ID** (ör. `a1b2c3d4-e5f6-7890-abcd-ef1234567890`)
- Bir **Client Secret** (bunu güvende tutun!)

> [!WARNING]
> Organizasyon yöneticileri, oluşturulduktan sonra OAuth uygulamasını yönetebilir; bu, istemci gizli anahtarını yenilemeyi ve belirteç süresini yapılandırmayı içerir. Uygulama, organizasyon ayarlarınızın **OAuth Apps** bölümünde listelenir ve bu uygulamada yapılan değişiklikler organizasyonun [audit logs](./audit-logs#oauth-apps) kaydına işlenir.

### Kimlik Doğrulama

Token Exchange, OAuth uygulama kimlik bilgilerinizle HTTP Basic Authentication kullanır. Yetkilendirme başlığını oluşturmak için `client_id:client_secret` değerini Base64 kodlayın:

```bash
# Create the authorization header
export CLIENT_ID="your-client-id"
export CLIENT_SECRET="your-client-secret"
export AUTH_HEADER=$(echo -n "${CLIENT_ID}:${CLIENT_SECRET}" | base64)
```

### E-posta ile jeton yayınlama

Bir organizasyon üyesine e-posta adresi kullanarak bir erişim belirteci vermek için:

```bash
curl -X POST "https://huggingface.co/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic ${AUTH_HEADER}" \
  -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
  -d "subject_token=user@yourorg.com" \
  -d "subject_token_type=urn:huggingface:token-type:user-email"
```

### Yanıt

Başarılı bir istek bir erişim belirteci döndürür:

```json
{
  "access_token": "hf_oauth_...",
  "token_type": "bearer",
  "expires_in": 28800,
  "scope": "openid profile email read-repos",
  "id_token": "eyJhbGciOiJS...",
  "issued_token_type": "urn:ietf:params:oauth:token-type:access_token"
}
```

`openid` kapsamı istendiğinde `id_token` alanı dahil edilir.

Daha sonra bu belirteci, kullanıcının adına API istekleri yapmak için kullanabilirsiniz:

```bash
curl "https://huggingface.co/api/whoami-v2" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}"
```

### Kapsam kontrolü

Varsayılan olarak, verilen jetonlar OAuth uygulamasında yapılandırılmış tüm kapsamları devralır. Belirli kapsamları istemek için `scope` parametresini ekleyebilirsiniz. Kullanılabilir değerler için [Şu anda desteklenen kapsamlar](#currently-supported-scopes) bölümüne bakın.

Token'ın etkin izinleri, hem istenen kapsam hem de kullanıcının organizasyon içindeki rolü tarafından sınırlanır.

```bash
curl -X POST "https://huggingface.co/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic ${AUTH_HEADER}" \
  -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
  -d "subject_token=user@yourorg.com" \
  -d "subject_token_type=urn:huggingface:token-type:user-email" \
  -d "scope=openid profile"
```

> [!TIP]
> En az yetki ilkesine uyun: Uygulamanızın gerçekten ihtiyaç duyduğu kapsamları isteyin.

### Güvenlik hususları

Token Exchange üzerinden verilen jetonlar yerleşik güvenlik kısıtlamalarına sahiptir:

- **Organizasyon kapsamındaki**: Jetonlar yalnızca organizasyonunuz içindeki kaynaklara (organizasyona ait modeller, veri kümeleri, Spaces ve koleksiyonlar) erişebilir. Organizasyon dışında erişim salt okunurdur ve şunlarla sınırlıdır: herhangi bir kullanıcıdan veya organizasyondan herkese açık koleksiyonlar ve kullanıcıya bireysel olarak erişim izni verilmiş herkese açık gated depolar.
- **Kişisel erişim yok**: Jetonlar, kullanıcının kişisel özel depolarına veya diğer organizasyonların özel depolarına erişemez.
- **Kısa ömürlü**: Jetonlar varsayılan olarak 8 saat sonra sona erer. Organizasyon yöneticileri, jeton süresini (en fazla 30 gün) OAuth uygulama ayarlarında yapılandırabilir. Yenileme jetonu sağlanmaz.
- **Denetlenebilir**: Tüm token değişimleri, organizasyonunuzun [denetim günlüklerinde](./audit-logs) kaydedilir ve görüntülenebilir.

> [!WARNING]
> OAuth uygulama kimlik bilgilerinizi dikkatli bir şekilde koruyun. İstemci gizli anahtarınıza erişimi olan herkes, organizasyonunuzdaki herhangi bir üye adına jeton çıkarabilir.

### Hata yanıtları

| Hata | Açıklama |
|-------|-------------|
| `invalid_client` | İstemci, token değişimi kullanmaya yetkili değil veya uygulama bir organizasyona bağlı değil |
| `invalid_grant` | Bağlı kuruluşta kullanıcı bulunamadı |
| `invalid_scope` | İstenen kapsam geçerli değil |

### Referans

**Yetki türü:**
```
urn:ietf:params:oauth:grant-type:token-exchange
```

**İstek parametresi (`subject_token_type`):**

| Değer | Açıklama |
|-------|-------------|
| `urn:huggingface:token-type:user-email` | Kullanıcıyı e-posta adresiyle tanımlayın |

**Yanıt alanı (`issued_token_type`):**

| Değer | Açıklama |
|-------|-------------|
| `urn:ietf:params:oauth:token-type:access_token` | Bir erişim jetonunun verildiğini belirtir |

**İlgili belgeler:**
- [RFC 8693 - OAuth 2.0 Belirteç Değişimi](https://www.rfc-editor.org/rfc/rfc8693.html)
- [Denetim Kayıtları](./audit-logs)

