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