Wir Brechen der Google-Anmelde JavaScript - Plattform - Bibliothek für Web . Für die Authentifizierung und Benutzer-Anmelde, verwenden Sie das neue Google Identity Services SDKs sowohl für Web und Android statt .

Integration von Google Log-In in Ihre Android-App

Um Google Sign-In in Ihre Android-App zu integrieren, konfigurieren Sie Google Sign-In und fügen Sie dem Layout Ihrer App eine Schaltfläche hinzu, die den Anmeldevorgang startet.

Bevor Sie beginnen

Konfigurieren Sie ein Google - API - Konsolenprojekt und richten Sie Ihr Android Studio - Projekt .

Konfigurieren Sie Google Sign-in und das GoogleSignInClient-Objekt

  1. In Ihrer Anmeldung in der Aktivität onCreate Methode configure Google Sign-In die Benutzerdaten durch Ihre Anwendung erforderlich beantragen. Zum Beispiel Google Sign-In auf Anfrage der Benutzer - ID und die grundlegenden Profilinformationen, erstellen Sie ein konfigurieren GoogleSignInOptions Objekt mit dem DEFAULT_SIGN_IN Parameter. Zur Anforderung der Benutzer E - Mail - Adressen und schaffen die GoogleSignInOptions mit dem Objekt requestEmail Option.

    // 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();

    Wenn Sie weitere Bereiche den Zugriff auf Google APIs anfordern müssen, geben Sie diese mit requestScopes . Für eine optimale Benutzererfahrung fordern Sie bei der Anmeldung nur die Bereiche an, die für die minimale Funktion Ihrer App erforderlich sind. Fordern Sie zusätzliche Bereiche nur an, wenn Sie sie benötigen, damit Ihre Benutzer den Zustimmungsbildschirm im Kontext einer von ihnen ausgeführten Aktion sehen. Siehe Anfordern Weitere Scopes .

  2. Dann auch in Anmelde-Aktivität der onCreate Methode, erstellen Sie ein GoogleSignInClient Objekt mit den Optionen , die Sie angegeben.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Nach einem vorhandenen angemeldeten Benutzer suchen

In Ihrer Aktivität onStart Methode überprüfen , ob ein Benutzer bereits in Ihre App mit Google unterzeichnet 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 zurück GoogleSignInAccount Objekt (nicht null ), hat der Benutzer bereits in Ihre App mit Google unterzeichnet. Aktualisieren Sie Ihre Benutzeroberfläche entsprechend, d. h. blenden Sie die Anmeldeschaltfläche aus, starten Sie Ihre Hauptaktivität oder was auch immer für Ihre App geeignet ist.

Wenn GoogleSignIn.getLastSignedInAccount gibt null , hat der Benutzer noch nicht mit Google , um Ihre Anwendung unterzeichnet. Aktualisieren Sie Ihre Benutzeroberfläche, um die Google-Anmeldeschaltfläche anzuzeigen.

Fügen Sie Ihrer App die Google-Anmeldeschaltfläche hinzu

  1. Die standardmäßige Google-Anmeldeschaltfläche Fügen Sie die SignInButton in Ihrer Anwendung Layout:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Optional: Wenn Sie die Standardanmeldeschaltfläche Grafik verwenden , anstatt Ihre eigenen Zeichen in der Bereitstellung Schaltfläche Assets, können Sie die Schaltfläche der Größe mit der anpassen setSize Methode.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. In der Android - Aktivität (beispielsweise in der onCreate - Methode), registrieren Sie Ihre Schaltfläche OnClickListener in den Benutzer anmelden , wenn darauf geklickt:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Starten Sie den Anmeldevorgang

  1. Bild der Anmeldekontoauswahl In den die Aktivität onClick Methode Griff Anmeldeschaltfläche Abgriffe durch ein Zeichen-Vorsatzes in der Schaffung getSignInIntent Methode, und Starten des Vorsatzes mit startActivityForResult .

    @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);
    }

    Beim Starten des Intents wird der Benutzer aufgefordert, ein Google-Konto auszuwählen, mit dem er sich anmelden möchte. Wenn Sie Bereiche jenseits angeforderte profile , email - openid email und openid , wird der Benutzer auch Zugriff auf die angeforderten Ressourcen zu gewähren aufgefordert.

  2. Nachdem sich der Benutzer in können Sie eine bekommen GoogleSignInAccount Objekt für den Benutzer in die Aktivitäten der onActivityResult Methode.

    @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);
        }
    }

    Die GoogleSignInAccount Objekt enthält Informationen über die angemeldeten Nutzer, wie zum Beispiel den Namen des Benutzers.

    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 auch den E - Mail - Adresse des Benutzers erhalten mit getEmail , dem Google - ID des Benutzers (für die clientseitige Verwendung) mit getId und einer ID für den Benutzer mit Token getIdToken . Wenn Sie den derzeit angemeldeten Nutzer zu einem Backend - Server übergeben müssen, senden die ID zu Back - End - Server - Token und das Token auf dem Server validieren.