אפשר ליצור קישור חשבונות ישירות מתוך האפליקציה לנייד, וכך לאפשר למשתמשים לקשר את החשבון שלהם בשירות שלכם לחשבון Google. הקישור שנוצר מעניק ל-Google גישה לנתונים שהמשתמש מסכים לשתף.
הגישה הזו משפרת את הביצועים של קישור החשבון, כי היא יוצרת אינטראקציה עם המשתמשים בהקשר המוכר של האפליקציה במקום בשיחה עם Assistant. אפשר לשלב אותו בתהליך ההצטרפות של משתמשים, בהגדרות ובאזורים אחרים באפליקציה, וכך ליצור הזדמנויות לגילוי ולשימוש בפעולה שלכם ב-Google Assistant. לדוגמה, אחרי הקישור אפשר להציע למשתמש לעבור ישירות לפעולה שלכם.
היתרונות למשתמשים כוללים:
- המשתמשים יכולים להתחיל ולהשלים את תהליך קישור החשבונות באפליקציה שלך, סביבה שהם כבר מכירים.
- משתמשים לא דורשים פרטי כניסה, מכיוון שהם כבר אומתו במכשיר ובאפליקציה לנייד.
היתרונות למפתחים כוללים:
- ניתן לקבוע היכן לקדם ולהפעיל קישור חשבונות באפליקציה לנייד, לדוגמה, בהגדרות המשתמש, במודעות מעברון או אחרי שמשתמש נכנס לאפליקציה לנייד. הוספת מספר נקודות כניסה להפעלת קישור חשבון עוזרת להפוך את הקישור של החשבון לגלוי יותר, וכתוצאה מכך יש יותר מעורבות ומספר החשבונות המקושרים.
- עלייה בשיעור ההמרה, כי משתמשים יכולים להשלים את תהליך הקישור בפחות שלבים מתהליך ה-OAuth הרגיל לאינטרנט.
- נדרש מאמץ נמוך של הנדסה כדי להטמיע קישור מהפלטפורמה שלך (Android), כי התהליך הזה ממנף את ההטמעה הקיימת של OAuth2.0 בהנחה שכבר ביצעת הטמעה כזו.
- שיעורי נשירה מופחתים מפני שמשתמשים לא צריכים להזין מחדש את פרטי ההתחברות שלהם והם יכולים להשלים את התהליך בפחות שלבים. שיעורי הנשירה עשויים להיות גבוהים עד 80% בנתיבים שבהם המשתמשים נדרשים להיזכר ולהזין את פרטי הכניסה שלהם.
איך זה עובד
כדי ליצור קישור מהפלטפורמה, צריך לפעול לפי השלבים הבאים:
- המשתמש ילחץ על טריגר לקישור או יפעיל אותו באפליקציה לנייד.
- המשתמש בוחר את חשבון Google שהוא רוצה לקשר.
- המשתמש בוחר חשבון Google קיים במכשיר כדי לקשר אותו, או נכנס לחשבון חדש.
- למשתמש מוצגים מסכי הסכמה שמתארחים ב-Google, והוא צריך להסכים כדי להמשיך או לבטל כדי להפסיק את תהליך הקישור.
- למשתמש מוצג מסך ההסכמה והוא צריך להסכים כדי להמשיך או לבטל כדי להפסיק את תהליך הקישור.
- הקישור נוצר בין החשבון של המשתמש בשירות שלכם לבין חשבון Google שלו.

איור 1. קישור מתוך זרימת הפלטפורמה
דרישות
כדי להטמיע את התכונה 'קישור מהפלטפורמה שלך', אתם צריכים:
- אפליקציה ל-Android.
- בעלות על שרת OAuth 2.0, ניהול ותחזוקה שלו, שכולל תמיכה בתהליך קוד אימות של OAuth 2.0.
הגדרה
לפני שממשיכים לשלבים הבאים, צריך להשלים את תהליך הרישום של קישור החשבון.
הגדרת סביבת הפיתוח
כדי לקבל את הגרסה העדכנית של Google Play Services במארח הפיתוח:
- פותחים את Android SDK Manager.
בקטע SDK Tools, מחפשים את Google Play services.
אם הסטטוס של החבילות האלה הוא לא Installed, בוחרים את שתיהן ולוחצים על Install Packages.
הגדרת האפליקציה
בקובץ
build.gradle
ברמת הפרויקט, צריך לכלול את מאגר Maven של Google גם בקטעbuildscript
וגם בקטעallprojects
.buildscript { repositories { google() } } allprojects { repositories { google() } }
מוסיפים את התלויות של ה-API 'קישור לחשבון Google' לקובץ Gradle ברמת האפליקציה של המודול, שבדרך כלל נקרא
app/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-auth:21.4.0' }
הוספת תמיכה בקישור מהפלטפורמה
הקישור מהפלטפורמה יגרום לשמירת אסימון גישה על ידי Google, שסופק על ידי השירות שלכם. צריך לקבל הסכמה לפני שמחזירים את האסימון עבור המשתמש.
כדי לקבל הסכמה מהמשתמש ולהחזיר אסימון קוד אימות באמצעות Google Play Services SDK, פועלים לפי השלבים הבאים.
יוצרים PendingIntent שיכול להפעיל את פעילות ההסכמה – ההסכמה מופעלת על ידי Play Services API. תצטרכו לספק
PendingIntent
(שייקראconsentPendingIntent
לצורך הבהרה) כשמתבצעת קריאה ל-APIKotlin
// 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();
יצירת פעילות תואמת לטיפול בכוונת ההסכמה
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(); } }
אנחנו מניחים שהשיטות
onConsentAccpeted()
ו-onConsentRejectedOrCanceled()
מופעלות אם המשתמש מאשר או דוחה/מבטל את ההסכמה שלו, בהתאמה.יוצרים בקשה לשמירת הטוקן ומעבירים את
PendingIntent
שנוצר בשלב 1 למעלה, בין שאר פרמטרי ההגדרה.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)); ```
השלבים שלמעלה גורמים למשתמש להביע הסכמה ומחזירים קוד הרשאה ל-Google.
שיטות מומלצות
באפליקציה צריך להציג למשתמש את סטטוס הקישור באמצעות לחצן, מתג או אלמנט חזותי דומה.
איור 1. תמונה לדוגמה של סטטוס קישור
אחרי שהקישור מצליח, צריך להודיע על כך למשתמש, למשל להציג הודעה קצרה, להפעיל שינוי במצב של מתג או להפנות את המשתמש לדף נפרד שמאשר את הצלחת הקישור.
מומלץ להציג למשתמשים באפליקציה בקשה לקשר חשבונות, רצוי על סמך אותות חזקים שמצביעים על כך שהקישור יועיל למשתמשים האלה.
אחרי הקישור המוצלח, כדאי לתת למשתמשים דוגמה לפעולה שאפשר לבצע עם החשבון המקושר. לדוגמה, אם קישרתם שירות סטרימינג של מוזיקה, בקשו מ-Google Assistant להשמיע מוזיקה.
לאפשר למשתמשים לנהל את החשבונות המקושרים שלהם, כולל האפשרות לנתק את הקישור שלהם. מפנים אותם לדף ניהול החשבונות המקושרים שלהם ב-Google, כלומר לכתובת https://myaccount.google.com/accountlinking.