واجهة برمجة تطبيقات جديدة لتسجيل الدخول بحساب Google

"خدمات هوية Google" (GIS) هي مجموعة جديدة من واجهات برمجة التطبيقات التي تسهِّل على المستخدمين إمكانية تسجيل الدخول والاشتراك بشكل آمن، في حزمة سهلة التنفيذ للمطورين. يعرض هذا المستند بالتفصيل واجهة برمجة تطبيقات جديدة لتسجيل الدخول إلى Google (جزء من نظام المعلومات الجغرافية) يمكن استخدامها من أجل بدء إجراءات تسجيل الدخول أو الاشتراك عندما ينقر المستخدم على "تسجيل الدخول باستخدام حساب Google" . يمكن استخدام واجهة برمجة التطبيقات هذه بدلاً من واجهات برمجة التطبيقات الحالية لتسجيل الدخول إلى Google تدفقات تسجيل الدخول.

يجب عدم استخدام واجهة برمجة التطبيقات هذه إلا عندما يُظهر المستخدم نية تسجيل الدخول صراحةً. من خلال Google. على سبيل المثال، يمكنك استخدام واجهة برمجة التطبيقات هذه عند النقر على الزر "تسجيل الدخول باستخدام حساب Google". الزر في تطبيقك.

يجب عدم استخدام واجهة برمجة التطبيقات هذه لتطلب من المستخدم تسجيل الدخول عند تشغيل التطبيق أو تسجيل الدخول. الاستجابة لمشغل آخر مثل إضافة عنصر إلى عربة التسوق. بالنسبة حالات الاستخدام هذه، استخدم تسجيل الدخول أو إنشاء حساب من خلال ميزة "نقرة واحدة"

عند بدء مسار "تسجيل الدخول بحساب Google" باستخدام واجهة برمجة التطبيقات الجديدة، سيتم عرض هذا واجهة المستخدم:

تسجيل الدخول بحساب Google

قبل البدء

ضبط مشروع وحدة تحكّم واجهة برمجة تطبيقات Google وإعداد مشروع "استوديو Android"

تقديم طلب تسجيل الدخول

لبدء عملية تسجيل الدخول بحساب 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 لصورة الملف الشخصي. إذا كنت بحاجة إلى معلومات إضافية، يمكنك توجيه المستخدمين في تدفق كامل لمعلومات الملف الشخصي.