پیوند حساب می تواند مستقیماً در برنامه تلفن همراه شما انجام شود و به کاربران شما امکان می دهد حساب خود را در سرویس شما با حساب Google خود پیوند دهند. پیوند ایجاد شده به Google اجازه دسترسی به دادههایی را میدهد که کاربر رضایت دارد به اشتراک بگذارد.
این رویکرد با درگیر کردن کاربران در زمینه آشنای برنامه شما به جای مکالمه دستیار، عملکرد پیوند حساب را بهبود می بخشد. میتوان آن را با ورود کاربر، تنظیمات، و سایر سطوح برنامه ادغام کرد و فرصتهایی را برای کشف و مشارکت Google Assistant Action شما ایجاد کرد. به عنوان مثال، پس از پیوند، می توانید پیشنهاد دهید که کاربر را مستقیماً به Action خود ببرید.
مزایا برای کاربران عبارتند از:
- کاربران میتوانند فرآیند پیوند حساب را در برنامه شما، محیطی که قبلاً با آن آشنا هستند، شروع و تکمیل کنند.
- کاربران به اعتبارنامه ورود نیاز ندارند زیرا قبلاً در دستگاه و برنامه تلفن همراه شما تأیید شده اند.
مزایای توسعه دهندگان عبارتند از:
- محل تبلیغ و شروع پیوند حساب در برنامه تلفن همراه خود را کنترل کنید، به عنوان مثال، در تنظیمات کاربر، در موارد بینابینی یا پس از ورود کاربر به برنامه تلفن همراه شما. افزودن چندین نقطه ورودی برای شروع پیوند حساب کمک می کند تا پیوند حساب قابل شناسایی تر شود و در نتیجه تعامل و تعداد حساب های مرتبط افزایش یابد.
- افزایش نرخ تبدیل زیرا کاربران میتوانند فرآیند پیوند را در مراحل کمتری نسبت به جریان استاندارد OAuth مبتنی بر وب تکمیل کنند.
- برای پیادهسازی پیوند از پلتفرم شما (اندروید) به تلاش مهندسی کم نیاز است زیرا این جریان از اجرای OAuth2.0 موجود شما استفاده میکند، با فرض اینکه قبلاً یکی را پیادهسازی کردهاید.
- کاهش نرخ رها کردن به این دلیل که کاربران نیازی به وارد کردن مجدد اعتبار ورود به سیستم خود ندارند و میتوانند این فرآیند را در مراحل کمتری تکمیل کنند. در جریان هایی که کاربران باید اعتبار ورود به سیستم خود را به خاطر بیاورند و وارد کنند، نرخ خروج می تواند تا 80٪ باشد.
روش کار
پیوند از پلاتفرم شما در مراحل زیر تکمیل میشود:
- کاربر روی راهانداز پیونددهی در برنامه تلفن همراه شما کلیک میکند / آن را تغییر میدهد.
- کاربر «حساب Google» را برای پیوند دادن انتخاب میکند.
- کاربر یکی از «حسابهای Google» موجود در دستگاه را برای پیوند دادن انتخاب میکند یا با حساب جدیدی به سیستم وارد میشود
- صفحه رضایت میزبانیشده توسط Google به کاربر نشان داده میشود و او باید برای ادامه دادن موافقت کند یا برای متوقف کردن فرایند پیونددهی لغو کند.
- صفحه رضایت شما به کاربر نشان داده میشود و او باید برای ادامه دادن موافقت کند یا برای متوقف کردن فرایند پیونددهی لغو کند.
- پیوند بین حساب کاربر در سرویس شما و «حساب Google» او برقرار میشود.
شکل ۱. پیوند از «جریان پلاتفرم» شما
الزامات
برای پیادهسازی Link از پلاتفرم خود، به موارد زیر نیاز دارید:
- برنامه Android.
- مالک، مدیر، و نگهدارنده سرور OAuth 2.0 باشید که از جریان کد مجوز OAuth 2.0 پشتیبانی میکند.
راهاندازی
قبلاز ادامه دادن مراحل زیر، باید فرایند ثبتنام «پیونددهی حساب» را تکمیل کرده باشید.
راهاندازی محیط توسعه نرمافزار
جدیدترین خدمات Google Play را در میزبان توسعهدهنده خود دریافت کنید:
- مدیر کیت توسعه نرمافزار Android را باز کنید.
در بخش ابزارهای کیت توسعه نرمافزار، خدمات Google Play را پیدا کنید.
اگر وضعیت این بستهها «نصبشده» نیست، هر دو را انتخاب کنید و روی نصب بستهها کلیک کنید.
پیکربندی برنامه
در فایل
build.gradleدر سطح پروژه، مخزن Maven متعلق به Google را در هر دو بخشbuildscriptوallprojectsاضافه کنید.buildscript { repositories { google() } } allprojects { repositories { google() } }وابستگیهای میانای برنامهسازی کاربردی «پیوند دادن با Google» را به فایل gradle سطح برنامه ماژولتان اضافه کنید، که معمولاً
app/build.gradleاست:dependencies { implementation 'com.google.android.gms:play-services-auth:22.0.0' }
افزودن پشتیبانی از پیوند از پلاتفرم شما
جریان «پیوند از پلاتفرم شما» منجر به ذخیره شدن کد دسترسی ارائهشده توسط سرویس شما در Google میشود. قبلاز برگرداندن کد برای کاربر، باید رضایت او دریافت شود.
مراحل زیر را دنبال کنید تا رضایت کاربر را دریافت کنید و ازطریق کیت توسعه نرمافزار «خدمات Google Play» یک کد اصالتسنجی برگردانید.
PendingIntent بسازید که بتواند فعالیت رضایت شما را راهاندازی کند - رضایت توسط میانای برنامهسازی کاربردی «خدمات Play» راهاندازی میشود. هنگام فراخوانی میانای برنامهسازی کاربردی، باید
PendingIntent(که برای شفافیت بیشترconsentPendingIntentنامیده میشود) ارائه کنیدKotlin
// Build a PendingIntent that can launch the consent activity val consentPendingIntent = buildConsentPendingIntent()جاوا
// Build a PendingIntent that can launch your consent activity PendingIntent consentPendingIntent = buildConsentPendingIntent();«فعالیت» متناظر را برای رسیدگی به قصد رضایت ایجاد کنید
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() }جاوا
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()فراخوانی میشوند.درخواستی برای ذخیره کردن توکن ایجاد کنید و، در میان پارامترهای پیکربندی دیگر،
PendingIntentایجادشده در مرحله ۱ بالا را ارسال کنید.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))جاوا
// 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 برمیگرداند.
روالهای مطلوب
برنامه شما باید وضعیت پیوند را ازطریق دکمه، کلید، یا عنصر دیداری مشابهی به کاربر نشان دهد.
شکل ۱. نمونه تصویر وضعیت پیوند
باید پساز پیوند موفقیتآمیز به کاربر اطلاع دهید، مثلاً با نمایش یک اعلان موقت، راهاندازی تغییر وضعیت دکمه، یا هدایت کاربر به صفحه موفقیتآمیز بودن پیوند جداگانه.
باید از کاربران درونبرنامه بخواهید حسابهایشان را پیوند دهند، ترجیحاً براساس نشانههای قوی که نشان میدهد پیوند دادن حسابها برای این کاربران مفید خواهد بود.
پساز پیوند کردن موفقیتآمیز، باید به کاربران نمونهای از کارهایی را که میتوانند با حساب پیوندشده انجام دهند نشان دهید، مثلاً اگر بهتازگی سرویس جاریسازی موسیقی را پیوند کردهاید، از «دستیار Google» بخواهید موسیقی پخش کند.
به کاربران امکان دهید حسابهای پیوندشدهشان را مدیریت کنند، ازجمله گزینه لغو پیوند آنها. آنها را به صفحه مدیریت «حسابهای پیوندشده Google» خودشان، یعنی https://myaccount.google.com/accountlinking، هدایت کنید.