Doğrudan platformunuzdan Google Hesabı Bağlama işlemini 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ı 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:

  1. Kullanıcı, mobil uygulamanızdaki bir bağlantı tetikleyicisini tıklar veya açar / kapatır.
  2. Kullanıcı bağlanacak Google Hesabı'nı seçer.
    1. Kullanıcı, bağlantı oluşturmak için cihazda mevcut bir Google Hesabı seçer veya yeni bir hesapla oturum açar
  3. 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.
  4. 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.
  5. 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:

  1. Android SDK Yöneticisi'ni açın.
  1. SDK Araçları'nın altında Google Play Hizmetleri'ni bulun.

  2. 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

  1. Proje düzeyindeki build.gradle dosyanızdaki buildscript ve allprojects bölümlerinize Google'ın Maven deposunu ekleyin.

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. "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'
    }
    

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.

  1. İ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 şekilde consentPendingIntent olarak bahsedilecektir) 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();
    
  2. İ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() ve onConsentRejectedOrCanceled() yöntemlerinin çağrıldığını varsayarız.

  3. 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.

Referans

Android auth API referans dokümanları