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 parola | POST /v1/auth/guest/upgrade/email · TS upgradeGuest · Unity UpgradeGuestAsync | E-posta ve parola |
POST /v1/auth/link/google + callback · TS linkOAuth + completeOAuth | Google 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ıtCache-Control: private, no-storetaşı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çimCrxError(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
403alı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:
| Durum | Anlamı |
|---|---|
400 | Son kalan sağlayıcı kimliği çözülemez (hesap kilitlenmesin diye) |
404 | Bu 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
400alı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
| Durum | Sonuç |
|---|---|
| Misafir, adresi başka hesapta kayıtlı bir e-postayla terfi etmeye çalışır | 409; misafir oturumu bozulmaz |
| Misafir, Google’a bağlanır ve Google kimliği başka oyuncuda | 409 account_already_linked |
| Misafir, Google’a bağlanır ve Google’ın doğruladığı e-posta başka oyuncunun e-postasıyla eşleşir | 409 account_already_linked (birleştirme yok) |
| Kayıtlı oyuncu aynı sağlayıcıyı ikinci kez bağlamaya çalışır | 422 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ğlanma | Reddedilir (403) |