ממשק API חדש לכניסה באמצעות חשבון Google

שירותי הזהויות של Google (GIS) הם קבוצה חדשה של ממשקי API שמאפשרים למשתמשים כניסה והרשמה מאובטחים, בחבילה קלה ליישום עבור מפתחים. מסמך זה מפרט ממשק API חדש לכניסה באמצעות חשבון Google (חלק מ-GIS) שניתן להשתמש בו כדי להתחיל את תהליך הכניסה או ההרשמה כשמשתמש מקיש על 'כניסה באמצעות חשבון Google'. לחצן. אפשר להשתמש בממשק ה-API הזה במקום בממשקי ה-API הקיימים לכניסה באמצעות חשבון Google עבור תהליכי כניסה לחשבון.

יש להשתמש ב-API הזה רק כשהמשתמש מביע במפורש כוונה להיכנס לחשבון עם Google. לדוגמה, כדאי להשתמש בממשק ה-API הזה כשהם לוחצים על 'כניסה באמצעות חשבון Google'. באפליקציה שלך.

אין להשתמש ב-API הזה כדי להציג למשתמש בקשה להיכנס לחשבון כשמפעילים אותו או תגובה לטריגר אחר, כמו הוספת פריט לעגלת הקניות. עבור בתרחישים לדוגמה האלה, כניסה והרשמה בהקשה אחת.

כשתתחילו את תהליך הכניסה באמצעות חשבון Google עם ה-API החדש, הכתובת הזו תוצג UI:

כניסה באמצעות חשבון Google

לפני שמתחילים

מגדירים פרויקט במסוף Google API ומגדירים פרויקט 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 של תמונת הפרופיל. אם דרוש לך מידע נוסף, אפשר להפנות משתמשים בתהליך מלא של פרטי הפרופיל.