Um Google Log-in in Ihre Android-App zu integrieren, konfigurieren Sie Google Log-in und Fügen Sie dem Layout Ihrer App eine Schaltfläche hinzu, mit der der Anmeldevorgang gestartet wird.
Hinweis
Konfigurieren Sie ein Google API Console-Projekt und richten Sie Ihr Android Studio-Projekt ein.
Google Log-in und das Objekt „GoogleSignInClient“ konfigurieren
Konfigurieren Sie in der
onCreate
-Methode Ihrer Anmeldeaktivität Google Log-in für die für Ihre App erforderlichen Nutzerdaten anfordern. Um beispielsweise Google Log-in, um die ID und grundlegende Profildaten enthält, erstellen SieGoogleSignInOptions
mit dem ParameterDEFAULT_SIGN_IN
. Wenn Sie auch die E-Mail-Adressen der Nutzer anfordern möchten, erstellen Sie dasGoogleSignInOptions
-Objekt mit der OptionrequestEmail
.// Configure sign-in to request the user's ID, email address, and basic // profile. ID and basic profile are included in DEFAULT_SIGN_IN. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
Geben Sie bei Bedarf zusätzliche Bereiche für den Zugriff auf Google APIs an. mit
requestScopes
. Für eine optimale Nutzererfahrung sollten Sie bei der Anmeldung nur die Bereiche anfordern, erforderlich, damit Ihre App nur minimal funktioniert. Fordern Sie zusätzliche Bereiche nur an, wenn Sie sie benötigen, damit Nutzer den Einwilligungsbildschirm im Kontext einer von ihnen ausgeführten Aktion sehen. Siehe Zusätzliche Bereiche anfordern.Erstellen Sie dann auch in der
onCreate
-Methode Ihrer Anmeldeaktivität einGoogleSignInClient
-Objekt mit den von Ihnen angegebenen Optionen// Build a GoogleSignInClient with the options specified by gso. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Nach einem vorhandenen angemeldeten Nutzer suchen
Prüfen Sie in der onStart
-Methode Ihrer Aktivität, ob sich ein Nutzer bereits mit Google in Ihrer App angemeldet hat.
// Check for existing Google Sign In account, if the user is already signed in // the GoogleSignInAccount will be non-null. GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this); updateUI(account);
Wenn GoogleSignIn.getLastSignedInAccount
ein GoogleSignInAccount
-Objekt zurückgibt (und nicht null
), hat sich der Nutzer bereits mit Google in Ihrer App angemeldet.
Aktualisieren Sie Ihre Benutzeroberfläche entsprechend, d. h. blenden Sie die Anmeldeschaltfläche aus, starten Sie
oder was für Ihre App geeignet ist.
Wenn GoogleSignIn.getLastSignedInAccount
null
zurückgibt, hat der Nutzer dies noch nicht getan
mit Google in Ihrer App angemeldet sind. Benutzeroberfläche aktualisieren, um Google Log-in anzuzeigen
Schaltfläche.
Google Log-in-Schaltfläche zu Ihrer App hinzufügen
Fügen Sie
SignInButton
hinzu. im Layout Ihrer Anwendung:<com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Optional: Wenn Sie die Standardgrafik für die Anmeldeschaltfläche anstelle der eigene Assets für die Anmeldeschaltfläche zur Verfügung stellen, können Sie die mit dem
setSize
.// Set the dimensions of the sign-in button. SignInButton signInButton = findViewById(R.id.sign_in_button); signInButton.setSize(SignInButton.SIZE_STANDARD);
Registrieren Sie in der Android-Aktivität (z. B. in der Methode
onCreate
)OnClickListener
Ihrer Schaltfläche, um den Nutzer anzumelden, wenn er darauf klickt:findViewById(R.id.sign_in_button).setOnClickListener(this);
Anmeldevorgang starten
In der
onClick
-Methode der Aktivität erstellen Sie ein Anmeldeabsicht mit demgetSignInIntent
und starten Sie den Intent mitstartActivityForResult
.@Override public void onClick(View v) { switch (v.getId()) { case R.id.sign_in_button: signIn(); break; // ... } }
private void signIn() { Intent signInIntent = mGoogleSignInClient.getSignInIntent(); startActivityForResult(signInIntent, RC_SIGN_IN); }
Wenn der Intent gestartet wird, wird der Nutzer aufgefordert, ein Google-Konto auszuwählen, mit dem er sich anmelden möchte. Wenn Sie Bereiche angefordert haben, die über
profile
,email
undopenid
hinausgehen, gilt Folgendes: wird der Nutzer außerdem aufgefordert, Zugriff auf die angeforderten Ressourcen zu gewähren.Nachdem sich der Nutzer angemeldet hat, können Sie ein
GoogleSignInAccount
erhalten. -Objekt für den Nutzer in deronActivityResult
-Methode der Aktivität.@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { // The Task returned from this call is always completed, no need to attach // a listener. Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } }
Das Objekt
GoogleSignInAccount
enthält Informationen zum angemeldeten Nutzer z. B. den Namen des Nutzers.private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); // Signed in successfully, show authenticated UI. updateUI(account); } catch (ApiException e) { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information. Log.w(TAG, "signInResult:failed code=" + e.getStatusCode()); updateUI(null); } }
Sie können die E-Mail-Adresse des Nutzers auch mit
getEmail
abrufen, Die Google-ID des Nutzers (für die clientseitige Verwendung) mitgetId
, und ein ID-Token für den Nutzer mitgetIdToken
. Wenn Sie den aktuell angemeldeten Nutzer an einen Backend-Server übergeben müssen, ID-Token an deinen Backend-Server senden und validieren Sie das Token auf dem Server.