لینک کردن حساب Google را مستقیماً از پلتفرم خود شروع کنید.

پیوند حساب می تواند مستقیماً در برنامه تلفن همراه شما انجام شود و به کاربران شما امکان می دهد حساب خود را در سرویس شما با حساب Google خود پیوند دهند. پیوند ایجاد شده به Google اجازه دسترسی به داده‌هایی را می‌دهد که کاربر رضایت دارد به اشتراک بگذارد.

این رویکرد با درگیر کردن کاربران در زمینه آشنای برنامه شما به جای مکالمه دستیار، عملکرد پیوند حساب را بهبود می بخشد. می‌توان آن را با ورود کاربر، تنظیمات، و سایر سطوح برنامه ادغام کرد و فرصت‌هایی را برای کشف و مشارکت Google Assistant Action شما ایجاد کرد. به عنوان مثال، پس از پیوند، می توانید پیشنهاد دهید که کاربر را مستقیماً به Action خود ببرید.

مزایا برای کاربران عبارتند از:

  • کاربران می‌توانند فرآیند پیوند حساب را در برنامه شما، محیطی که قبلاً با آن آشنا هستند، شروع و تکمیل کنند.
  • کاربران به اعتبارنامه ورود نیاز ندارند زیرا قبلاً در دستگاه و برنامه تلفن همراه شما تأیید شده اند.

مزایای توسعه دهندگان عبارتند از:

  • محل تبلیغ و شروع پیوند حساب در برنامه تلفن همراه خود را کنترل کنید، به عنوان مثال، در تنظیمات کاربر، در موارد بینابینی یا پس از ورود کاربر به برنامه تلفن همراه شما. افزودن چندین نقطه ورودی برای شروع پیوند حساب کمک می کند تا پیوند حساب قابل شناسایی تر شود و در نتیجه تعامل و تعداد حساب های مرتبط افزایش یابد.
  • افزایش نرخ تبدیل زیرا کاربران می‌توانند فرآیند پیوند را در مراحل کمتری نسبت به جریان استاندارد OAuth مبتنی بر وب تکمیل کنند.
  • برای پیاده‌سازی پیوند از پلتفرم شما (اندروید) به تلاش مهندسی کم نیاز است زیرا این جریان از اجرای OAuth2.0 موجود شما استفاده می‌کند، با فرض اینکه قبلاً یکی را پیاده‌سازی کرده‌اید.
  • کاهش نرخ رها کردن به این دلیل که کاربران نیازی به وارد کردن مجدد اعتبار ورود به سیستم خود ندارند و می‌توانند این فرآیند را در مراحل کمتری تکمیل کنند. در جریان هایی که کاربران باید اعتبار ورود به سیستم خود را به خاطر بیاورند و وارد کنند، نرخ خروج می تواند تا 80٪ باشد.

چگونه کار می کند

پیوند از پلتفرم شما در مراحل زیر تکمیل می شود:

  1. کاربر یک ماشه پیوند را در برنامه تلفن همراه شما کلیک / تغییر می دهد.
  2. کاربر حساب Google را برای پیوند انتخاب می کند.
    1. کاربر یک حساب Google موجود در دستگاه را برای پیوند انتخاب می کند، یا با یک حساب جدید وارد سیستم می شود
  3. صفحه‌های رضایت میزبانی شده توسط Google به کاربر نشان داده می‌شود و باید با ادامه یا لغو برای توقف فرآیند پیوند موافقت کند.
  4. صفحه رضایت شما به کاربر نشان داده می‌شود و برای توقف فرآیند پیوند باید با ادامه یا لغو موافقت کند.
  5. پیوند بین حساب کاربر در سرویس شما و حساب Google او ایجاد می شود.

شکل 1 . پیوند از جریان پلتفرم شما

الزامات

برای پیاده سازی لینک از پلتفرم خود، به موارد زیر نیاز دارید:

  • یک برنامه اندروید
  • سرور OAuth 2.0 را که از جریان کد مجوز OAuth 2.0 پشتیبانی می کند، مالک، مدیریت و نگهداری کنید.

راه اندازی

قبل از ادامه مراحل زیر، باید مراحل ثبت نام پیوند حساب را تکمیل کرده باشید.

محیط توسعه خود را تنظیم کنید

جدیدترین خدمات Google Play را در میزبان توسعه خود دریافت کنید:

  1. Android SDK Manager را باز کنید.
  1. در زیر ابزار SDK ، خدمات Google Play را پیدا کنید.

  2. اگر وضعیت این بسته‌ها نصب نشده است، هر دو را انتخاب کنید و روی Install Packages کلیک کنید.

برنامه خود را پیکربندی کنید

  1. در فایل build.gradle در سطح پروژه خود، مخزن Maven Google را در هر دو بخش buildscript و allprojects قرار دهید.

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. وابستگی های مربوط به API "Link with Google" را به فایل gradle سطح برنامه ماژول خود اضافه کنید، که معمولا app/build.gradle است:

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

پیوند از جریان پلتفرم شما باعث می‌شود که یک رمز دسترسی ارائه شده توسط سرویس شما توسط Google ذخیره شود. قبل از بازگرداندن رمز برای کاربر، باید رضایت دریافت شود.

مراحل زیر را دنبال کنید تا رضایت کاربر را دریافت کنید و رمز تأیید اعتبار را از طریق SDK خدمات Google Play بازگردانید.

  1. یک PendingIntent بسازید که می‌تواند فعالیت رضایت شما را راه‌اندازی کند - رضایت توسط API خدمات Play راه‌اندازی می‌شود. هنگام فراخوانی API، باید یک PendingIntent (که برای وضوح به عنوان consentPendingIntent نامیده می شود) ارائه دهید.

    کاتلین

    // Build a PendingIntent that can launch the consent activity
    val consentPendingIntent = buildConsentPendingIntent()
    

    جاوا

    // Build a PendingIntent that can launch your consent activity
    PendingIntent consentPendingIntent =
              buildConsentPendingIntent();
    
  2. برای رسیدگی به قصد رضایت، فعالیت مربوطه را ایجاد کنید

    کاتلین

      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()
      }
    

    جاوا

      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();
        }
     }
    
    

    اگر کاربر رضایت شما را بپذیرد یا رد/لغو کند، فرض می‌کنیم که روش‌های onConsentAccpeted() و onConsentRejectedOrCanceled() فراخوانی می‌شوند.

  3. یک درخواست برای ذخیره توکن ایجاد کنید و در میان سایر پارامترهای پیکربندی، PendingIntent ایجاد شده در مرحله 1 در بالا را ارسال کنید.

    کاتلین

      // 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))
    

    جاوا

      // 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));
      ```
    

مراحل بالا از کاربر درخواست رضایت می کند و یک کد مجوز را به Google برمی گرداند.

بهترین شیوه ها

  • برنامه شما باید وضعیت پیوند را از طریق یک دکمه، جابجایی یا یک عنصر بصری مشابه به کاربر نشان دهد.

    شکل 1 . نمونه تصویر وضعیت پیوند

  • شما باید پس از یک پیوند موفقیت آمیز به کاربر اطلاع دهید، به عنوان مثال نمایش یک نان تست، راه اندازی تغییر وضعیت تغییر یا هدایت کاربر به یک صفحه موفقیت پیوند جداگانه.

  • باید در نظر داشته باشید که کاربران درون برنامه ای را برای پیوند دادن حساب ها، به طور ایده آل بر اساس سیگنال های قوی مبنی بر اینکه پیوند دادن به چنین کاربرانی سودمند است، در نظر بگیرید.

  • پس از پیوند موفقیت آمیز، باید به کاربران مثالی بدهید که با حساب پیوند داده شده چه کاری انجام دهند، به عنوان مثال اگر به تازگی یک سرویس پخش موسیقی را پیوند داده اید، از دستیار Google خود بخواهید موسیقی پخش کند.

  • کاربران را قادر می سازد تا حساب های مرتبط خود را مدیریت کنند، از جمله گزینه لغو پیوند آنها. آن‌ها را به صفحه مدیریت حساب‌های مرتبط Google، یعنی https://myaccount.google.com/accountlinking، هدایت کنید.

مرجع

مستندات مرجع Android auth api