A client for the sign-in API.
The Sign-In APIs can be used for both sign-in and sign-up scenarios. The two scenarios
share the same flow in the code, but different BeginSignInRequest
should be provided in different scenarios.
The Sign-In APIs guide the user through credential selection before returning an instance
of SignInCredential
containing the data for sign-in or sign-up.
The recommended process for retrieving credentials using this API is as follows:
Identity.getSignInClient.
SignInClient.beginSignIn, supplying the constructed BeginSignInRequest
as an input.PendingIntent
from the result
of the operation to display the UI that guides the user through sign-in. The result of
sign-in will be returned in
Activity.onActivityResult; calling
SignInClient.getSignInCredentialFromIntent will either return the SignInCredential
if the operation was successful, or throw an ApiException
that indicates the reason for failure.When the user signs out of your application, please make sure to call SignInClient.signOut.
BeginSignInRequestDifferent BeginSignInRequest
should be used for sign-in and sign-up.
Two types of credentials are supported in SignInCredential:
Google ID token and password. To give users more options to choose from when selecting a
credential to sign in with, and by extension, increase your app's sign-in rate, it is
strongly recommended that applications support both Google ID token and password
credentials:
PasswordRequestOptions in the request.
GoogleIdTokenRequestOptions accordingly - be sure to supply your server client
ID (you can find this in your Google API console project).
For the sign-in scenario, it is strongly recommended to set
GoogleIdTokenRequestOptions.Builder.setFilterByAuthorizedAccounts to
true so only the Google accounts that the user has authorized before will
show up in the credential list. This can help prevent a new account being created when
the user has an existing account registered with the application.
For example, an app that supports password login and federated sign-in with Google would construct a request as follows:
BeginSignInRequest request = BeginSignInRequest.builder()
.setPasswordRequestOptions(
PasswordRequestOptions.builder()
.setSupported(true)
.build())
.setGoogleIdTokenRequestOptions(
GoogleIdTokenRequestOptions.builder()
.setSupported(true)
// Set filterByAuthorizedAccounts = true to avoid duplicated accounts being created
.setFilterByAuthorizedAccounts(true)
.setServerClientId("serverClientID")
.build())
.build();
For the sign-up scenario, only Google ID token credentials should be used. The
GoogleIdTokenRequestOptions may look like the following:
BeginSignInRequest request = BeginSignInRequest.builder()
.setGoogleIdTokenRequestOptions(
GoogleIdTokenRequestOptions.builder()
.setSupported(true)
.setFilterByAuthorizedAccounts(false)
.setServerClientId("serverClientID")
.build())
.build();
| abstract Task<BeginSignInResult> |
beginSignIn(BeginSignInRequest
signInRequest)
Initiates the retrieval of a credential that can assist the caller in signing a
user in to their application.
|
| abstract SignInCredential |
getSignInCredentialFromIntent(Intent data)
Retrieves the
SignInCredential from the Intent
returned upon successful sign-in, throwing an ApiException
if no credential is present.
|
| abstract Task<PendingIntent> |
getSignInIntent(GetSignInIntentRequest
getSignInIntentRequest)
Gets the
PendingIntent
that initiates the Google Sign-in flow.
|
| abstract Task<Void> |
signOut()
Resets internal state related to sign-in.
|
Initiates the retrieval of a credential that can assist the caller in signing a user in to their application.
If the request cannot be honored, an exception will be set on the returned
Task. In all
other cases, a BeginSignInResult
will be returned.
| signInRequest | configuration for the sign-in operation |
|---|
Task which
eventually contains the result of the initializationRetrieves the SignInCredential
from the Intent
returned upon successful sign-in, throwing an ApiException
if no credential is present.
| ApiException |
|---|
Gets the PendingIntent
that initiates the Google Sign-in flow.
If the request cannot be honored, an exception will be set on the returned
Task. In all
other cases, a PendingIntent
will be returned.
| getSignInIntentRequest | configuration for Google Sign-in flow |
|---|
Task which
eventually contains the PendingIntent
to start the Google Sign-in flow.