Google Identity Services(GIS)は、Google Cloud のインフラストラクチャを 安全なログインと登録を、デベロッパー向けに実装しやすいパッケージで提供します。 このドキュメントでは、次のタスクに使用できる新しい Google ログイン API(GIS の一部)について詳しく説明します。 ユーザーが [Google でログイン] をタップしたときにログインまたは登録のフローを開始する ] ボタンを離します。この API は、既存の Google ログイン API の代わりに使用できます。 ログインフローを行います
この API は、ユーザーが明示的にログインの意思を示した場合にのみ使用してください 。たとえば、ユーザーが [Google でログイン] をクリックした場合に、この API を使用します。 ] ボタンを押します。
この API を使用して、アプリの起動時やログイン時にユーザーにログインを求めることは禁止されています 別のトリガー(ショッピング カートへの商品の追加など)に反応します。対象 使用する場合は、 ワンタップでのログインと登録。
新しい API で Google ログインフローを開始すると、 UI:
始める前に
Google API Console プロジェクトを設定し、Android Studio プロジェクトをセットアップします。
ログイン リクエストを行う
Identity API を使用して Google ログインフローを開始するには、
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 です追加情報が必要な場合は、ユーザーに プロフィール情報フローに統合できます