Yeni bir cihaz kurarken uygulama kimlik bilgilerini geri yükleme

Kimlik Bilgisi Yöneticisi'nin Kimlik Bilgilerini Geri Yükle özelliği, kullanıcıların yeni bir cihaz kurarken uygulama hesaplarını geri yüklemelerine olanak tanır. Bu API, geliştirici önizleme aşamasındadır ve Android 9 veya sonraki sürümlerin yüklü olduğu ve Google Play Hizmetleri (GMS) Core sürümü 242200000 ya da sonraki sürümlerin bulunduğu tüm cihazlarda kullanılabilir. Kimlik bilgilerini geri yükleme özelliğinin avantajları şunlardır:

  • Sorunsuz kullanıcı deneyimi: Kullanıcılar, her uygulamada manuel olarak oturum açmak zorunda kalmadan uygulama hesaplarını geri yükleyebilir.
  • Kullanıcı etkileşiminde artış: Kullanıcılar, yeni bir cihazı kurarken hesaplarını geri yükleyebiliyorlarsa uygulamanızı kullanmaya devam etme olasılıkları daha yüksektir.
  • Daha az geliştirme çabası: Yeterlik bilgilerini geri yükleme özelliği, Yeterlik Bilgileri Yöneticisi'ne entegre edildiğinden geçiş anahtarlarını zaten destekleyen geliştiriciler, yeterlik bilgilerini geri yükleme özellikleri ekleyebilir.

İşleyiş şekli

İlgili kimlik bilgilerini oluşturmak, almak ve temizlemek için Kimlik Bilgilerini Geri Yükle'yi kullanabilirsiniz.

  1. Geri yükleme kimliği oluşturun: Kullanıcı uygulamanızda oturum açtığında, hesabıyla ilişkili bir geri yükleme kimliği oluşturun. Bu kimlik bilgisi yerel olarak depolanır ve kullanıcı Google Yedekleme'yi etkinleştirdiyse ve uçtan uca şifreleme kullanılabiliyorsa bulutla senkronize edilir (uygulamalar bulutla senkronizasyonu devre dışı bırakabilir).
  2. Geri yükleme kimlik bilgisini alma: Kullanıcı yeni bir cihaz kurduğunda uygulamanız, Kimlik Bilgileri Yöneticisi'nden geri yükleme kimlik bilgisini isteyebilir. Bu sayede, ek giriş yapılmasına gerek kalmadan kullanıcıların oturumunu otomatik olarak açabilirsiniz.
  3. Kimliği Geri Yükleme'yi temizleyin: Kullanıcı uygulamanızdan çıktığında ilişkili Kimliği Geri Yükleme'yi silmeniz gerekir.

Kimlik bilgilerini geri yükleme özelliği, geçiş anahtarlarını zaten uygulamış olan arka uç sistemleriyle sorunsuz bir şekilde entegre edilebilir. Bu uyumluluk, hem geçiş anahtarlarının hem de kimlik bilgilerini geri yükleme özelliği tarafından kullanılan kimlik bilgisi türü olan geri yükleme anahtarlarının aynı temel teknik özelliklere uymasıyla ilgilidir. Bu uyum sayesinde, kimlik bilgileri geri yükleme işlemi, geçiş anahtarı etkin sistemlerde depolanan kullanıcı kimlik bilgilerini etkili bir şekilde alıp yeniden etkinleştirebilir. Böylece, farklı platformlarda ve kimlik doğrulama yöntemlerinde tutarlı ve kullanıcı dostu bir deneyim sağlanır.

Kimlik Bilgisi Yöneticisi alt sayfası
1. şekil. Kimlik bilgisi oluşturma, geri yükleme akışı başlatma ve otomatik kullanıcı oturum açma dahil olmak üzere, geri yükleme kimlik bilgisi kullanılarak uygulama verilerinin yeni bir cihaza geri yüklenmesini gösteren şema

Uygulama

Restore Credentials API, Credential Manager Jetpack kitaplığı aracılığıyla kullanılabilir. Başlamak için şu adımları uygulayın:

  1. Projenize Credential Manager bağımlılığını ekleyin.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. CreateRestoreCredentialRequest nesnesi oluşturun.

  3. CredentialManager nesnesinde createCredential() yöntemini çağırın.

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    Oluşturulan bu geri yükleme kimlik bilgisi, bir webauthn kimlik bilgisi türüdür ve geri yükleme anahtarı olarak bilinir.

  4. Kullanıcı yeni bir cihaz kurduğunda getCredential() yöntemini CredentialManager nesnesinde çağırın.

    // Fetch the Authentication JSON from server
    val authenticationJson = fetchAuthenticationJson()
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(listOf(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. Kullanıcı uygulamanızın oturumunu kapattığında CredentialManager nesnesinde clearCredentialState() yöntemini çağırın.

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

Yedekleme aracısı kullanıyorsanız getCredential bölümünü onRestore geri çağırma işlevi içinde gerçekleştirin. Bu sayede, uygulama verileri geri yüklendikten hemen sonra uygulamanın kimlik bilgilerinin de geri yüklenmesi sağlanır.

Sık sorulan sorular

1. SORU Geri yükleme anahtarı ile geçiş anahtarı arasındaki fark nedir?

Geri yükleme anahtarı, geçiş anahtarına benzer şekilde çalışır ancak yeni cihazlarda hesap geri yükleme için özel olarak tasarlanmıştır. Kimlik doğrulamak için Google Şifre Yöneticisi gibi bir şifre yöneticisi kullandığınızda, kullanılabilir geçiş anahtarlarınız ve şifreleriniz gösterilir. Geri yükleme anahtarı ise normal oturum açma işlemleri için tasarlanmadığından gösterilmez.

2. SORU Geri yükleme anahtarı tek kullanımlık bir kimlik bilgisi midir?

Hayır, geri yükleme anahtarı tek kullanımlık bir kimlik bilgisi değildir. Kimlik bilgisi yöneticisi durum bilgisi içermez ve kullanıcı etkinliğinden haberdar değildir. Bu nedenle, kullanımdan sonra anahtarı otomatik olarak silemez.

Geri yükleme anahtarları yalnızca aşağıdaki durumlarda kaldırılır:

  • Sistem düzeyinde işlemler: Kullanıcılar uygulamayı kaldırır veya verilerini temizler.
  • Uygulama düzeyinde çağrılar: Uygulamanızın kodunda kullanıcı oturumunu kapatma işlemini yaptığınızda CredentialManager#clearCredentialState() çağrısı yaparak anahtarı programatik olarak silersiniz.

3. soru: Kimlik bilgilerini geri yükleme özelliği yalnızca yeni cihazlarda mı çalışır?

Evet, bu özellik doğrudan sistemin yedekleme ve geri yükleme işlevine bağlı olduğundan yeni bir Android destekli cihazın ilk kurulumu için tasarlanmıştır.

4. SORU Kullanıcıyı, aynı Google Hesabı'nın oturumunun açık olduğu herhangi bir cihazda sessizce oturum açmak için Kimlik Bilgilerini Geri Yükleme'yi kullanabilir miyim?

Hayır, kimlik bilgilerini geri yükleme özelliği, cihazlar arasında genel oturum açma için kullanılmak üzere tasarlanmamıştır. Bu özellik yalnızca belirli bir senaryoda çalışır: Kullanıcı, eski cihazındaki bir yedeği geri yükleyerek yeni bir cihaz kurduğunda. Bu tek seferlik geri yükleme işleminin başarılı olması için her iki cihazın da aynı Google Hesabı'na bağlı olması gerekir.

5. soru: Kuruluşumun bir ana uygulaması ve birden fazla alt uygulaması var. Tek bir geri yükleme anahtarı, bu uygulamaların tümünde kullanılabilir mi?

Hayır. Geri yükleme anahtarı, bir uygulamanın benzersiz paket adıyla ilişkilendirilir. Ana uygulamanızın ve her bir alt uygulamanın farklı paket adları olduğundan her uygulama için ayrı bir geri yükleme anahtarı oluşturmanız gerekir.

6. SORU: Kullanıcı hesabının geri yükleme anahtarını oluşturmak için geçiş anahtarı gerekli mi?

Hayır, geçiş anahtarı gerekli değildir. Geri yükleme anahtarı oluşturma özelliği, kullanıcının oturum açma yönteminden bağımsızdır. Amacı, kullanıcının mevcut kimliği doğrulanmış durumunu kaydetmektir. Kullanıcı uygulamanızda etkin olarak oturum açtığı sürece kullanıcı için geri yükleme anahtarı oluşturabilirsiniz.

7. soru: Kullanıcı, geri yükleme anahtarını silebilir mi?

Hayır, kullanıcı geri yükleme anahtarı üzerinde doğrudan kontrole sahip değildir. Uygulama mantığı, geri yükleme anahtarlarını yönetmekten sorumludur.

Güvenlik için, kullanıcı her oturumu kapattığında uygulamanın anahtarı otomatik olarak silmesini öneririz. Bu sayede, kullanıcılar uygulamayı aynı cihazda bir sonraki açışlarında düzgün şekilde oturum kapatmış olur ve tekrar oturum açmaları istenir.

8. soru: Can I use Restore Credentials without setting allowBackup to true in my manifest?

Evet, allowBackup doğru olarak ayarlanıp ayarlanmadığına bakılmaksızın Kimlik Bilgilerini Geri Yükleme özelliği çalışır.

9. soru: Kimlik bilgilerini geri yükleme özelliği, aynı uygulamada birden fazla hesapla oturum açmış kullanıcılar için nasıl çalışır?

Kimlik Bilgilerini Geri Yükleme özelliği, bir defada yalnızca tek bir hesapla çalışacak şekilde tasarlanmıştır.