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ğlantı oluşturma işlemi şu adımlarla tamamlanır:

  1. Kullanıcı, mobil uygulamanızdaki bir bağlantı tetikleyicisini tıklayacak / devre dışı bırakacak.
  2. Kullanıcı, bağlanacak Google Hesabı'nı seçer.
    1. Kullanıcı bağlantı oluşturmak için cihazda mevcut bir Google Hesabı'nı seçer 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ı işlemini durdurmak için kullanıcıya devam etmeyi veya iptal etmeyi kabul etmesi gerekir.
  4. İ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.
  5. 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

Koşullar

Bağlantıyı platformunuzdan uygulamak için aşağıdakilere ihtiyacınız vardır:

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:

  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üklendi" değilse her ikisini de seçip Paketleri Yükle'yi tıklayın.

Uygulamanızı yapılandırma

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

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

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.

  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 net olması için consentPendingIntent 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();
    
  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 eder veya reddeder/iptal ederse 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 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 iyi 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ıdan sonra kullanıcıyı bilgilendirmelisiniz (ör. mesaj görüntüleme, 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 yapacaklarına dair bir örnek sunmalısınız. Örneğin, yeni 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.

Referans

Android auth API referans dokümanları