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

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