Hesap Bağlama işlemi doğrudan mobil uygulamanızda tamamlanabilir. Böylece kullanıcılar, hizmetinizdeki hesaplarını Google Hesaplarına bağlayabilir. Oluşturulan bağlantı, Google'ın kullanıcının paylaşmayı kabul ettiği verilere erişmesine izin verir.
Bu yaklaşım, kullanıcıları bir Asistan görüşmesi yerine uygulamanızın aşina olduğu bağlamda etkileşimde bulunarak hesap bağlama performansını iyileştirir. Kullanıcı ilk katılımı, ayarlar ve diğer uygulama yüzeylerine entegre edilebilir. Böylece Google Asistan İşleminizin keşfedilmesi ve etkileşimi için fırsatlar oluşturulur. Örneğin, bağlantı oluşturduktan sonra kullanıcıyı doğrudan İşleminize yönlendirmeyi teklif edebilirsiniz.
Kullanıcılar için şu avantajları sunar:
- Kullanıcılar, aşina oldukları bir ortamda uygulamanızda hesap bağlama işlemini başlatabilir ve tamamlayabilir.
- Cihazda ve mobil uygulamanızda zaten kimlik doğrulaması yapılmış olduğundan kullanıcılar giriş kimlik bilgilerini istemez.
Geliştiricilere sunulan avantajlar şunlardır:
- Mobil uygulamanızda (örneğin, kullanıcı ayarlarında, geçiş reklamlarında veya mobil uygulamanızda bir kullanıcı oturum açtıktan sonra) hesap bağlamanın nerede tanıtılacağını ve başlatılacağını kontrol edin. Hesap bağlama işlemini başlatmak için birden fazla giriş noktası eklemek, hesap bağlama işleminin daha kolay keşfedilmesini sağlar.
- Kullanıcılar, standart web tabanlı OAuth akışından daha az adımda bağlantı oluşturma olanağına sahip olduğundan dönüşüm oranındaki artış.
- Bu akış mevcut OAuth2.0 uygulamanızdan yararlandığı ve Platform'unuzdan (Android) Bağlantı'yı uygulamak için gereken düşük mühendislik çalışmasıyla, zaten uygulanmış bir varsayım olduğunu varsayar.
- Kullanıcıların giriş kimlik bilgilerini yeniden girmeleri gerekmeyeceğinden ve işlemi daha az adımda tamamlayabildiğinden, ayrılma oranları azaltıldı. Ayrılma oranları, kullanıcıların oturum açma kimlik bilgilerini hatırlamaları ve girmeleri gereken akışlarda% 80'e kadar çıkabilir.
İşleyiş şekli
Platformunuzdan bağlantı oluşturma işlemi şu adımlarla tamamlanır:
- Kullanıcı, mobil uygulamanızdaki bir bağlantı tetikleyicisini tıklayacak / devre dışı bırakacak.
- Kullanıcı, bağlanacak Google Hesabı'nı seçer.
- Kullanıcı bağlantı oluşturmak için cihazda mevcut bir Google Hesabı'nı seçer veya yeni bir hesapla oturum açar
- Kullanıcıya Google tarafından barındırılan izin ekranları gösterilir ve bağlantı işlemini durdurmak için kullanıcıya devam etmeyi veya iptal etmeyi kabul etmesi gerekir.
- İzin ekranınız kullanıcıya gösterilir. Bağlantı oluşturma işlemini durdurmak için kullanıcıya devam etmeyi veya iptal etmeyi kabul etmesi gerekir.
- Bağlantı; kullanıcının hesabı, hizmetiniz ve Google Hesabı arasında oluşturulur.
Şekil 1. Platform Akışınızdan bağlantı oluşturun
Şartlar
Bağlantıyı platformunuzdan uygulamak için aşağıdakilere ihtiyacınız vardır:
- Android uygulaması.
- OAuth 2.0 yetkilendirme kodu akışını destekleyen bir OAuth 2.0 sunucusuna sahip olma, bu sunucuyu yönetme ve sürdürme.
Kurulum
Aşağıdaki adımlara geçmeden önce, Hesap Bağlama kayıt işlemini tamamlamış olmanız gerekir.
Geliştirme ortamınızı ayarlama
Geliştirme ana makinenizde Google Play Hizmetleri'nin son sürümünü edinin:
- Android SDK Yöneticisi'ni açın.
SDK Araçları'nın altında Google Play Hizmetleri'ni bulun.
Bu paketlerin durumu "Yüklendi" değilse her ikisini de seçip Paketleri Yükle'yi tıklayın.
Uygulamanızı yapılandırma
Proje düzeyindeki
build.gradle
dosyanıza, hembuildscript
hem deallprojects
bölümlerinize Google'ın Maven deposunu ekleyin.buildscript { repositories { google() } } allprojects { repositories { google() } }
"Google'a bağla" API'si için bağımlılıkları, modülünüzün uygulama düzeyindeki gradle dosyasına ekleyin. Bu dosya genellikle
app/build.gradle
olan:dependencies { implementation 'com.google.android.gms:play-services-auth:21.2.0' }
Platformunuzdan Bağlantı için destek ekleyin
Platform akışınızdaki Bağlantı, hizmetiniz tarafından sağlanan ve Google tarafından kaydedilen bir erişim jetonunu sağlar. Kullanıcıya jeton döndürülmeden önce izin alınmalıdır.
Kullanıcıdan izin almak ve Google Play Hizmetleri SDK'sı üzerinden bir yetkilendirme kodu jetonu döndürmek için aşağıdaki adımları uygulayın.
İzin etkinliğinizi başlatabilecek bir PendingIntent oluşturun. İzin, Play Services API tarafından başlatılır. API çağrıldığında bir
PendingIntent
(daha net olması içinconsentPendingIntent
olarak adlandırılacaktır) sağlamanız gerekir.Kotlin
// Build a PendingIntent that can launch the consent activity val consentPendingIntent = buildConsentPendingIntent()
Java
// Build a PendingIntent that can launch your consent activity PendingIntent consentPendingIntent = buildConsentPendingIntent();
İzin amacını işlemek için ilgili etkinliği oluşturun
Kotlin
class ConsentActivity : AppCompatActivity private fun onConsentAccepted() { // Obtain a token (for simplicity, we’ll ignore the async nature // of the following call) val token = getToken() val intent = Intent() .putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token) setResult(Activity.RESULT_OK, intent) finish() } private fun onConsentRejectedOrCanceled() { setResult(Activity.RESULT_CANCELED) finish() }
Java
public class ConsentActivity extends AppCompatActivity { ... private void onConsentAccepted() { // Obtain a token (for simplicity, we’ll ignore the async nature of // the following call String token = getToken(); Intent intent = new Intent(); intent.putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token); setResult(Activity.RESULT_OK, intent); finish(); } private void onConsentRejectedOrCanceled() { setResult(Activity.RESULT_CANCELED, null); finish(); } }
Kullanıcı, izninizi kabul eder veya reddeder/iptal ederse
onConsentAccpeted()
veonConsentRejectedOrCanceled()
yöntemlerinin çağrıldığını varsayarız.Jetonu kaydetmek için bir istek oluşturun ve diğer yapılandırma parametrelerinin yanı sıra yukarıdaki 1. adımda oluşturulan
PendingIntent
parametresini iletin.Kotlin
// Create an ActivityResultLauncher which registers a callback for the // Activity result contract val activityResultLauncher = registerForActivityResult( ActivityResultContracts.StartIntentSenderForResult()) { result -> if (result.resultCode == RESULT_OK) { // Successfully finished the flow and saved the token } else { // Flow failed, for example the user may have canceled the flow } } // Build token save request val request = SaveAccountLinkingTokenRequest.builder() .setTokenType(SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE) .setConsentPendingIntent(consentPendingIntent) .setServiceId("service-id-of-and-defined-by-developer") //Set the scopes that the token is valid for on your platform .setScopes(scopes) .build() // Launch consent activity and retrieve token Identity.getCredentialSavingClient(this) .saveAccountLinkingToken(request) .addOnSuccessListener( saveAccountLinkingTokenResult -> { if (saveAccountLinkingTokenResult.hasResolution()) { val pendingIntent = saveAccountLinkingTokenResult .getPendingIntent() val intentSenderRequest = IntentSenderRequest .Builder(pendingIntent).build() activityResultLauncher.launch(intentSenderRequest) } else { // This should not happen, let’s log this Log.e(TAG, "Failed to save token"); } }) .addOnFailureListener(e -> Log.e(TAG, “Failed to save token”, e))
Java
// Create an ActivityResultLauncher which registers a callback for the // Activity result contract ActivityResultLauncher<IntentSenderRequest> activityResultLauncher = registerForActivityResult(new ActivityResultContracts .StartIntentSenderForResult(), result -> { if (result.getResultCode() == RESULT_OK) { // Successfully finished the flow and saved the token } else { // Flow failed, for example the user may have canceled the flow } }); // Build token save request SaveAccountLinkingTokenRequest request = SaveAccountLinkingTokenRequest.builder() .setTokenType( SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE) .setConsentPendingIntent(consentPendingIntent) .setServiceId("service-id-of-and-defined-by-developer") //Set the scopes that the token is valid for on your platform .setScopes(scopes) .build(); // Launch consent activity and retrieve token Identity.getCredentialSavingClient(this) .saveAccountLinkingToken(request) .addOnSuccessListener( saveAccountLinkingTokenResult -> { if (saveAccountLinkingTokenResult.hasResolution()) { // Launch the resolution intent PendingIntent pendingIntent = saveAccountLinkingTokenResult.getPendingIntent(); IntentSenderRequest intentSenderRequest = new IntentSenderRequest.Builder(pendingIntent).build(); activityResultLauncher.launch(intentSenderRequest); } else { // This should not happen, let’s log this Log.e(TAG, "Failed to save token"); } }) .addOnFailureListener(e -> Log.e(TAG, "Failed to save token", e)); ```
Yukarıdaki adımlar kullanıcıdan izin ister ve Google'a bir yetkilendirme kodu döndürür.
En İyi Uygulamalar
Uygulamanız, bağlantı durumunu bir düğme, açma/kapatma anahtarı veya benzer bir görsel öğe aracılığıyla kullanıcıya belirtmelidir.
Şekil 1. Örnek bağlantı durumu resmi
Başarılı bir bağlantı kurulduktan sonra kullanıcıyı bilgilendirmelisiniz, ör. durum mesajı gösterme, açma/kapatma durumu değişikliğini tetikleme veya kullanıcıyı ayrı bir bağlantı başarılı sayfasına yönlendirme.
İdeal olarak, bağlantı oluşturmanın bu tür kullanıcılara fayda sağlayacağına dair güçlü sinyallere dayanarak uygulama içi kullanıcılardan hesapları bağlamalarını isteyebilirsiniz.
Başarılı bir şekilde bağlandıktan sonra, kullanıcılara bağlı hesapla ne yapacağına dair bir örnek (ör. Yakın zamanda bir müzik akış hizmetini bağladıysanız Google Asistanınızdan müzik çalmasını isteyin.
Kullanıcılara, bağlı hesaplarını yönetme olanağı (bağlantılarını kaldırma seçeneği de dahil) sağlama. Kullanıcıları Google Bağlı Hesaplar yönetim sayfasına (https://myaccount.google.com/accountlinking) yönlendirin.