Google Identity Services (GIS) הוא סדרה חדשה של ממשקי API שמאפשרת למשתמשים להיכנס לחשבון ולהירשם בקלות ובצורה מאובטחת, בחבילה קלה להטמעה למפתחים. המסמך הזה כולל הסבר על ממשק API חדש לכניסה באמצעות חשבון Google (חלק מ-GIS), שבו תוכלו להשתמש כדי להתחיל את תהליך הכניסה או ההרשמה כשהמשתמש מקיש על הלחצן 'כניסה באמצעות חשבון Google'. אפשר להשתמש ב-API הזה במקום בממשקי ה-API הקיימים לכניסה באמצעות חשבון Google לתהליכי הכניסה.
עליכם להשתמש ב-API הזה רק כשהמשתמש מראה בצורה מפורשת כוונה להיכנס באמצעות חשבון Google. לדוגמה, תוכלו להשתמש ב-API הזה כשהם לוחצים על לחצן "Sign in with Google" באפליקציה שלכם.
אין להשתמש ב-API הזה כדי לבקש מהמשתמש להיכנס לחשבון במהלך הפעלת האפליקציה או בתגובה לגורם אחר, כמו הוספת פריט לעגלת הקניות. בתרחישים לדוגמה האלה, השתמשו בכניסה והרשמה בהקשה אחת.
כשתתחילו את תהליך הכניסה באמצעות חשבון Google לממשק החדש של ה-API, ממשק המשתמש הזה יוצג:
לפני שמתחילים
מגדירים פרויקט ב-Google API Console ומגדירים את פרויקט Android Studio.
שליחה של בקשת כניסה
כדי להפעיל תהליך כניסה באמצעות חשבון Google באמצעות Identity API, יוצרים אובייקט GetSignInRequest
. לאחר מכן, בקריאה לאובייקט SignInClient
getSignInIntent
. הקריאה הזו אסינכרונית, ולאחר ביצוע ההפעלה היא תספק PendingIntent
כדי לפתוח את תיבת הדו-שיח.
private static final int REQUEST_CODE_GOOGLE_SIGN_IN = 1; /* unique request id */
private void signIn() {
GetSignInIntentRequest request =
GetSignInIntentRequest.builder()
.setServerClientId(getString(R.string.server_client_id))
.build();
Identity.getSignInClient(activity)
.getSignInIntent(request)
.addOnSuccessListener(
result -> {
try {
startIntentSenderForResult(
result.getIntentSender(),
REQUEST_CODE_GOOGLE_SIGN_IN,
/* fillInIntent= */ null,
/* flagsMask= */ 0,
/* flagsValue= */ 0,
/* extraFlags= */ 0,
/* options= */ null);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "Google Sign-in failed");
}
})
.addOnFailureListener(
e -> {
Log.e(TAG, "Google Sign-in failed", e);
});
}
טיפול בתוצאות הכניסה
ב-onActivityResult
מאחזרים SignInCredential
. האובייקט SignInCredential
שמוחזר מ-getSignInCredentialFromIntent
מכיל מידע
על התחברות חוקית. אם המשתמש לא מצליח להתחבר מסיבה כלשהי, יורק ApiException
.
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
try {
SignInCredential credential = Identity.getSignInClient(this).getSignInCredentialFromIntent(data);
// Signed in successfully - show authenticated UI
updateUI(credential);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
}
}
}
}
private ActivityResultLauncher<IntentSenderRequest> loginResultHandler = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});
התוצאה של כניסה מוצלחת תמיד מחזירה למשתמשים את השם המלא, כתובת האימייל וכתובת ה-URL של תמונת הפרופיל. אם אתם זקוקים למידע נוסף, תוכלו להפנות את המשתמשים לתהליך מלא של פרטי הפרופיל.