Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hesap bağlama

Bir oyuncunun kimliği player.id ile tanınır; giriş yöntemleri bu kimliğe bağlanan yollardır. Bu sayfa misafirin kalıcı hesaba geçişini, Google kimliğinin bağlanmasını ve çözülmesini, bağlı kimliklerin listelenmesini ve çakışma durumlarında ne olduğunu anlatır.

Not

Open Play hesapları birleştirmez. Bir kimlik başka bir oyuncuya bağlıysa istek reddedilir; iki oyuncunun ilerlemesi hiçbir yolla tek hesaba katılmaz. Tek istisna, Google’ın e-postayla otomatik bağlanma kuralıdır; o da yeni bir oyuncu açılmasını önleyip kimliği mevcut hesaba ekler.

Misafirden kalıcı hesaba (terfi)

Misafir oyuncu iki yoldan kalıcı hesaba geçer; ikisinde de player.id değişmez, misafir sırrı emekliye ayrılır ve yeni oturum açılır:

YolÇağrıAyrıntı
E-posta ve parolaPOST /v1/auth/guest/upgrade/email · TS upgradeGuest · Unity UpgradeGuestAsyncE-posta ve parola
GooglePOST /v1/auth/link/google + callback · TS linkOAuth + completeOAuthGoogle ile giriş

Terfi yalnız misafir oyuncular içindir: misafir olmayan bir oyuncu için e-posta terfisi 422 verir. Google ile açılmış ya da zaten kayıtlı bir hesaba sonradan e-posta/parola eklenemez.

Bağlı kimlikleri listeleme

GET /v1/auth/identities
x-crx-env: <ortam-kimliği>
{
  "player_id": "0192…",
  "identities": [ { "provider": "google", "linked_at": "2026-11-03T10:00:00+00:00" } ]
}
  • Oturum gerekir (yoksa 401). Yanıt Cache-Control: private, no-store taşır.
  • Yalnız sağlayıcı kimlikleri listelenir (google, …); e-posta/parola girişi listelenmez. Sağlayıcının hesap kimliği (sub), e-postası ve belirteçleri yanıtta yoktur.
  • TypeScript: session.listIdentities() { playerId, identities: [{ provider, linkedAt }] } döndürür (camelCase); yanıt sıkı doğrulanır, beklenmeyen biçim CrxError(Contract) olur ve oturumu düşürmez.

“Hesabım” ekranınızda “Google bağla” ya da “Google bağlı” göstermek için bu uç yeterlidir.

Kimlik bağlama

POST /v1/auth/link/{provider} oturumdaki oyuncu için OAuth akışı başlatır ve {url, state} döner; oyuncu url’ye yönlendirilir, dönüşte callback tamamlanır. Kurallar:

  • Sağlayıcı başına tek kimlik: oyuncuda bu sağlayıcı zaten bağlıysa başlatma 422 (unprocessable: provider_already_linked) verir.
  • Oturum bağı: callback, bağlamayı başlatan oyuncunun oturumuyla gelmelidir; oturumsuz ya da başka oyuncunun oturumuyla gelen callback 403 alır.
  • Kimlik başka oyuncuda: Google kimliği başka bir oyuncuya bağlıysa callback 409 (already exists: account_already_linked) verir; misafir ilerlemesi dokunulmadan kalır.
  • Doğrulanmış e-posta gerekmez; e-postasız hesaplar da bağlayabilir.
  • Başlatma ve callback oranları: IP başına 30 / 60 sn ve 60 / 60 sn.

Kimlik çözme

POST /v1/auth/unlink/google
x-crx-env: <ortam-kimliği>
x-csrf-token: <csrf-belirteci>

204. Oturum gerekir. Hatalar:

DurumAnlamı
400Son kalan sağlayıcı kimliği çözülemez (hesap kilitlenmesin diye)
404Bu sağlayıcıya bağlı kimlik yok

Not

Bugün bir oyuncunun genellikle tek sağlayıcı kimliği olduğundan, çözme çağrısı pratikte çoğunlukla 400 alır. Uç, ikinci bir sağlayıcı eklendiğinde kullanılmak üzere yerindedir. Unlink için SDK yardımcısı yoktur; ham REST kullanın.

Çakışma tablosu

DurumSonuç
Misafir, adresi başka hesapta kayıtlı bir e-postayla terfi etmeye çalışır409; misafir oturumu bozulmaz
Misafir, Google’a bağlanır ve Google kimliği başka oyuncuda409 account_already_linked
Misafir, Google’a bağlanır ve Google’ın doğruladığı e-posta başka oyuncunun e-postasıyla eşleşir409 account_already_linked (birleştirme yok)
Kayıtlı oyuncu aynı sağlayıcıyı ikinci kez bağlamaya çalışır422 provider_already_linked
Yeni Google kimliği, mevcut e-posta/parola hesabının e-postasıyla eşleşir (Google kefil)Kimlik o hesaba otomatik bağlanır, oyuncu o hesaba girer
Banlı hesaba bağlanmaReddedilir (403)