Google Identity Services (GIS) مجموعه جدیدی از APIها است که ورود و ثبت نام آسان و ایمن را در قالب بسته ای آسان برای توسعه دهندگان به کاربران ارائه می دهد. این سند یک API ورود به سیستم جدید Google (بخشی از GIS) را توضیح می دهد که می تواند برای شروع جریان ورود به سیستم یا ثبت نام هنگامی که کاربر روی دکمه "ورود به سیستم با Google" ضربه می زند، استفاده شود. این API را می توان به جای API های ورود به سیستم Google برای جریان های ورود به سیستم استفاده کرد.
شما باید از این API فقط زمانی استفاده کنید که کاربر صراحتاً قصد ورود به سیستم با Google را نشان دهد. به عنوان مثال، وقتی روی دکمه «ورود با Google» در برنامه شما کلیک میکنند، از این API استفاده کنید.
شما نباید از این 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
});
نتیجه ورود موفقیت آمیز همیشه نام کامل، ایمیل و آدرس تصویر نمایه کاربران را برمی گرداند. اگر به اطلاعات بیشتری نیاز دارید، می توانید کاربران را به یک جریان اطلاعات پروفایل کامل هدایت کنید.