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ğlama işlemi aşağıdaki adımlarda tamamlanır:
- Kullanıcı, mobil uygulamanızdaki bir bağlantı tetikleyicisini tıklar veya açar / kapatır.
- Kullanıcı bağlanacak Google Hesabı'nı seçer.
- Kullanıcı, bağlantı oluşturmak için cihazda mevcut bir Google Hesabı seçer veya yeni bir hesapla oturum açar
- Kullanıcıya Google tarafından barındırılan bir izin ekranları gösterilir. Bağlantı işlemini durdurmak için kullanıcıya devam etmeyi veya iptal etmeyi kabul etmesi gerekir.
- Kullanıcıya izin ekranınız gösterilir. Bağlantı işlemini durdurmak için kullanıcıya devam etmeyi veya iptal etmeyi kabul etmesi gerekir.
- Bağlantı; kullanıcının hesabı, hizmetinizde ve Google Hesabı arasında oluşturulur.
Şekil 1. Platform Akışınızdan bağlantı oluşturma
Koşullar
Bağlantı'yı platformunuzdan uygulamak için şunlar gerekir:
- Bir Android uygulaması.
- OAuth 2.0 yetkilendirme kodu akışını destekleyen bir OAuth 2.0 sunucusuna sahip olmak, bu sunucuyu yönetmek ve sürdürmek.
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 barındırıcınızda en son Google Play Hizmetleri'ni edinin:
- Android SDK Yöneticisi'ni açın.
SDK Araçları'nın altında Google Play Hizmetleri'ni bulun.
Bu paketlerin durumu Yüklü değilse her ikisini de seçin ve Paketleri Yükle'yi tıklayın.
Uygulamanızı yapılandırma
Proje düzeyindeki
build.gradle
dosyanızdakibuildscript
veallprojects
bölümlerinize Google'ın Maven deposunu ekleyin.buildscript { repositories { google() } } allprojects { repositories { google() } }
"Link with Google" API'sinin bağımlılıklarını, modülünüzün uygulama düzeyindeki Gradle dosyasına ekleyin. Bu dosya genellikle
app/build.gradle
olur:dependencies { implementation 'com.google.android.gms:play-services-auth:21.0.0' }
Platformunuzdan Bağlantı desteği ekleyin
Platform akışınızdan gelen Bağlantı, Google tarafından, hizmetiniz tarafından sağlanan bir erişim jetonunun kaydedilmesine neden olur. Jeton, kullanıcı için iade edilmeden ö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 açık şekildeconsentPendingIntent
olarak bahsedilecektir) sağlamanız gerekirKotlin
// 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 ettiğinde veya reddettiğinde/iptal ettiğinde
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
değerini 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 iyi uygulamalar
Uygulamanız bir düğme, açma/kapatma düğmesi veya benzer bir görsel öğeyle kullanıcıya bağlantı durumunu belirtmelidir.
Şekil 1. Örnek bağlantı durumu resmi
Başarılı bir bağlantı gerçekleştikten sonra kullanıcıyı bilgilendirmelisiniz. Örneğin, bir durum mesajı göstermelisiniz, bir açma/kapatma durumu değişikliğini tetiklemeli veya kullanıcıyı ayrı bir bağlantı başarılı sayfasına yönlendirmelisiniz.
Uygulama içi kullanıcılardan, hesapları bağlamalarını isteyebilirsiniz. Bunu, bağlantı kurmanın bu kullanıcılara fayda sağlayacağına dair güçlü sinyallere dayanarak yapmayı düşünebilirsiniz.
Başarılı bir şekilde bağlandıktan sonra kullanıcılara bağlı hesapla ne yapabileceklerine dair bir örnek vermelisiniz. Örneğin, bir müzik akış hizmetini yeni bağladıysanız Google Asistanınızdan müzik çalmasını isteyin.
Kullanıcılara, bağlı hesaplarını yönetme olanağı ve bağlantıyı kaldırma seçeneği sunar. Kullanıcıları https://myaccount.google.com/accountlinking adresindeki Google Bağlı Hesaplar yönetim sayfasına yönlendirin.