לקוח הכניסה בנגיעה אחת מאחזר אסימון מזהה של Google כשהמשתמש בוחר חשבון Google. אסימון מזהה הוא טענת נכוֹנוּת (assertion) חתומה על הזהות של משתמש, שמכילה גם את פרטי הפרופיל הבסיסיים של המשתמש, כולל כתובת אימייל שאושרה על ידי Google.
כשאסימוני מזהה זמינים, אפשר להשתמש בהם כדי לבצע אימות מאובטח עם הקצה העורפי של האפליקציה, או כדי לרשום את המשתמש באופן אוטומטי לחשבון חדש בלי צורך לאמת את כתובת האימייל שלו.
כדי להיכנס או להירשם באמצעות אסימון מזהה, שולחים את האסימון לקצה העורפי של האפליקציה. בקצה העורפי, מאמתים את האסימון באמצעות ספריית לקוח של Google API או ספריית JWT לשימוש כללי. אם המשתמש לא נכנס לאפליקציה שלכם עם חשבון Google הזה בעבר, צריך ליצור חשבון חדש.
אם בחרתם להשתמש ב-nonce כדי למנוע התקפות שחזור, תוכלו להשתמש ב-getNonce כדי לשלוח אותו יחד עם אסימון המזהה לשרת הקצה העורפי ולבדוק את הערך הצפוי. מומלץ מאוד להשתמש במזהה חד-פעמי כדי לשפר את הבטיחות והאבטחה של המשתמשים.
אחזור אסימון מזהה מאובייקט פרטי הכניסה
אחרי שאתם מאחזרים את פרטי הכניסה של משתמש, בודקים אם אובייקט פרטי הכניסה כולל אסימון מזהה. אם כן, שולחים אותו לקצה העורפי.
Java
public class YourActivity extends AppCompatActivity { // ... private static final int REQ_ONE_TAP = 2; // Can be any integer unique to the Activity. private boolean showOneTapUI = true; // ... @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQ_ONE_TAP: try { SignInCredential credential = oneTapClient.getSignInCredentialFromIntent(data); String idToken = credential.getGoogleIdToken(); if (idToken != null) { // Got an ID token from Google. Use it to authenticate // with your backend. Log.d(TAG, "Got ID token."); } } catch (ApiException e) { // ... } break; } } }
Kotlin
class YourActivity : AppCompatActivity() { // ... private val REQ_ONE_TAP = 2 // Can be any integer unique to the Activity private var showOneTapUI = true // ... override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { REQ_ONE_TAP -> { try { val credential = oneTapClient.getSignInCredentialFromIntent(data) val idToken = credential.googleIdToken when { idToken != null -> { // Got an ID token from Google. Use it to authenticate // with your backend. Log.d(TAG, "Got ID token.") } else -> { // Shouldn't happen. Log.d(TAG, "No ID token!") } } } catch (e: ApiException) { // ... } } } // ... }