Google Hesabı Bağlantısı'nı doğrudan platformunuzdan başlatın.

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ı Asistan sohbeti yerine uygulamanızın tanıdık bağlamında etkileşime sokarak hesap bağlama performansını artırır. Kullanıcı oryantasyonu, ayarlar ve diğer uygulama yüzeylerine entegre edilebilir. Böylece, Google Asistan İşleminizin keşfedilmesi ve kullanıcı etkileşimi için fırsatlar yaratılır. Ö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 aşağıdaki adımlarda tamamlanır:

  1. Kullanıcı, mobil uygulamanızda bir bağlantı tetikleyicisini tıklayacak veya etkinleştirecek.
  2. Kullanıcı, bağlanacak Google Hesabı'nı seçer.
    1. Kullanıcı, cihazda mevcut bir Google Hesabı seçerek bağlantı oluşturur veya yeni bir hesapla oturum açar.
  3. Kullanıcıya Google tarafından barındırılan izin ekranları gösterilir ve bağlantı oluşturma işlemini durdurmak için devam etmeyi kabul etmesi veya iptal etmesi gerekir.
  4. Kullanıcıya izin ekranınız gösterilir ve bağlantı oluşturma işlemini durdurmak için devam etmeyi kabul etmesi veya iptal etmesi gerekir.
  5. Kullanıcının hizmetinizdeki hesabı ile Google Hesabı arasında bağlantı oluşturulur.

Şekil 1. Platform akışınızdan bağlantı oluşturma

Şartlar

Platformunuzda Bağlantı özelliğini 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 olmak, bu sunucuyu yönetmek ve bakımını yapmak.

Kurulum

Aşağıdaki adımlara geçmeden önce Hesap Bağlama kayıt sürecini tamamlamış olmanız gerekir.

Geliştirme ortamınızı kurma

Geliştirme ana makinenizde Google Play Hizmetleri'nin en son sürümünü edinin:

  1. Android SDK Manager'ı açın.
  1. SDK Tools (SDK Araçları) bölümünde Google Play services (Google Play Hizmetleri) seçeneğini bulun.

  2. Bu paketlerin durumu Yüklendi değilse ikisini de seçip Paketleri Yükle'yi tıklayın.

Uygulamanızı yapılandırma

  1. Proje düzeyindeki build.gradle dosyanızda, Google'ın Maven deposunu hem buildscript hem de allprojects bölümünüze ekleyin.

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. "Google ile Bağlantı" API'sinin bağımlılıklarını, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle app/build.gradle) ekleyin:

    dependencies {
      implementation 'com.google.android.gms:play-services-auth:21.4.0'
    }
    

Platformunuzdan Bağlantı akışı, hizmetiniz tarafından sağlanan bir erişim jetonunun Google tarafından kaydedilmesiyle sonuçlanır. Kullanıcı için jeton döndürülmeden önce izin alınmalıdır.

Kullanıcıdan izin almak ve Google Play Hizmetleri SDK'sı aracılığıyla bir yetkilendirme kodu jetonu döndürmek için aşağıdaki adımları uygulayın.

  1. İzin etkinliğinizi başlatabilecek bir PendingIntent oluşturun. İzin, Play Hizmetleri API'si tarafından başlatılır. API çağrıldığında PendingIntent sağlamanız gerekir (netlik için consentPendingIntent olarak adlandırılır).

    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();
    
  2. İzin niyetini 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 ederse veya reddederse/iptal ederse sırasıyla onConsentAccpeted() ve onConsentRejectedOrCanceled() yöntemlerinin çağrıldığını varsayıyoruz.

  3. Jetonu kaydetme isteği 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 İyi Uygulamalar

  • Uygulamanız, bağlantı durumunu kullanıcıya bir düğme, açma/kapatma düğmesi veya benzer bir görsel öğe aracılığıyla bildirmelidir.

    Şekil 1. Örnek bağlantı durumu resmi

  • Başarılı bir bağlantı oluşturulduktan sonra kullanıcıyı bilgilendirmelisiniz. Örneğin, bir pop-up mesajı görüntüleyebilir, geçiş durumu değişikliğini tetikleyebilir veya kullanıcıyı ayrı bir bağlantı başarısı sayfasına yönlendirebilirsiniz.

  • Uygulama içi kullanıcılara hesap bağlama istemi göndermeyi düşünmelisiniz. İdeal olarak, hesap bağlamanın bu kullanıcılara fayda sağlayacağına dair güçlü sinyaller temelinde istem gönderebilirsiniz.

  • Başarıyla bağladıktan sonra kullanıcılara bağlı hesapla ne yapacaklarına dair bir örnek vermelisiniz. Örneğin, bir müzik akış hizmetini yeni bağladıysanız Google Asistan'dan müzik çalmasını isteyin.

  • Kullanıcıların, bağlantılarını kaldırma seçeneği de dahil olmak üzere bağlı hesaplarını yönetmelerine olanak tanıyın. Kullanıcıları, Google bağlı hesapları yönetim sayfasına (https://myaccount.google.com/accountlinking) yönlendirin.

Referans

Android kimlik doğrulama API'si referans belgeleri