Die JavaScript-Plattformbibliothek für die Google Log-in wird für das Web eingestellt. Die Mediathek steht nach dem 31. März 2023 nicht mehr zum Download zur Verfügung. Verwenden Sie stattdessen die neuen Google Identity-Dienste für Web.
Standardmäßig hat die Erstellung neuer Client-IDs aufgrund der früheren Plattformbibliothek keine Auswirkungen. Bestehende Client-IDs sind davon nicht betroffen. Bei neuen Client-IDs, die vor dem 29. Juli 2022 erstellt wurden, kann `plugin_name` festgelegt werden, damit die Bibliothek verwendet werden kann.

Von GoogleAuthUtil und Plus.API migrieren

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Wenn du Google Log-in bisher mit GoogleAuthUtil.getToken oder Plus.API integriert hast, solltest du zur neuesten Log-in API migrieren, um die Sicherheit und Nutzerfreundlichkeit zu erhöhen.

Migration von Anti-Token-Anti-Muster

Sie sollten keine Zugriffstokens, die Sie mit GoogleAuthUtil.getToken erhalten haben, als Identitätsbestätigung an Ihren Back-End-Server senden, da Sie nicht so leicht verifizieren können, dass das Token an Ihr Back-End ausgestellt wurde. So sind Sie anfällig für das Einfügen eines Zugriffstokens von einem Angreifer.

Wenn Ihr Android-Code beispielsweise wie im folgenden Beispiel aussieht, sollten Sie Ihre App zu den aktuellen Best Practices migrieren.

Android-Code

In diesem Beispiel verwenden Zugriffstokenanfragen oauth2: sowie einen Bereichsstring als scope-Parameter für den GoogleAuthUtil.getToken-Aufruf (oauth2:https://www.googleapis.com/auth/plus.login).

Statt sich mit einem Zugriffstoken zu authentifizieren, das mit GoogleAuthUtil.getToken empfangen wurde, verwenden Sie entweder den Ablauf für den ID-Token oder den Vorgang für den Autorisierungscode.

Zum ID-Tokenablauf migrieren

Wenn du nur die ID, E-Mail-Adresse, den Namen oder die Profilbild-URL des Nutzers verwenden möchtest, verwende den ID-Token-Ablauf.

Nehmen Sie die folgenden Änderungen vor:

Android-Clientseite

  • Entfernen Sie die Berechtigung GET_ACCOUNTS (Kontakte), wenn Sie dies anfordern.
  • Beliebigen Code mit GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() oder AccountManager.newChooseAccountIntent() zu Auth.GOOGLE_SIGN_IN_API mit GoogleSignInOptions.Builder.requestIdToken(...)-Konfiguration wechseln.

Serverseitig

  • Erstellen Sie einen neuen Endpunkt für ID-Token-Authentifizierung
  • Alten Endpunkt nach der Migration der Client-Apps deaktivieren

Zum Serverauthentifizierungscode migrieren

Wenn dein Server auf andere Google APIs wie Google Drive, YouTube oder Kontakte zugreifen muss, verwende den Serverauthentifizierungscode-Ablauf.

Nehmen Sie die folgenden Änderungen vor, um zum Serverauthentifizierungscode zu migrieren:

Android-Clientseite

  • Entfernen Sie die Berechtigung GET_ACCOUNTS (Kontakte), wenn Sie dies anfordern.
  • Beliebigen Code mit GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() oder AccountManager.newChooseAccountIntent() zu Auth.GOOGLE_SIGN_IN_API mit GoogleSignInOptions.Builder.requestServerAuthCode(...)-Konfiguration wechseln.

Serverseitig

Sie können die API-Zugriffslogik weiterhin zwischen Ihrem alten und Ihrem neuen Endpunkt teilen. Beispiel:

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(...);
String accessToken = tokenResponse.getAccessToken();
String refreshToken = tokenResponse.getRefreshToken();
Long expiresInSeconds = tokenResponse.getExpiresInSeconds();

// Shared by your old and new implementation, old endpoint can pass null for refreshToken
private void driveAccess(String refreshToken, String accessToken, Long expiresInSeconds) {
   GoogleCredential credential = new GoogleCredential.Builder()
           .setTransPort(...)
           ...
           .build();
   credential.setAccessToken(accessToken);
   credential.setExpiresInSeconds(expiresInSeconds);
   credential.setRefreshToken(refreshToken);
}

Migration aus dem GoogleAuthUtil-ID-Tokenablauf

Wenn du GoogleAuthUtil verwendest, um ID-Tokens zu erhalten, musst du zum neuen ID-Token-Ablauf der Log-in API migrieren.

Wenn dein Android-Code beispielsweise wie folgt aussieht, solltest du migrieren:

Android-Code

In diesem Beispiel werden bei ID-Tokenanfragen audience:server:client_id und die Client-ID für deinen Webserver als „scope“-Parameter für den GoogleAuthUtil.getToken-Aufruf (audience:server:client_id:9414861317621.apps.googleusercontent.com) verwendet.

Der neue Ablauf der Log-in-API-ID hat folgende Vorteile:

  • Einfache Anmeldung mit nur einem Tippen
  • Dein Server kann ohne zusätzliche Netzwerkaufrufe Nutzerprofilinformationen abrufen

Nehmen Sie die folgenden Änderungen vor:

Android-Clientseite

  • Entfernen Sie die Berechtigung GET_ACCOUNTS (Kontakte), wenn Sie dies anfordern.
  • Beliebigen Code mit GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() oder AccountManager.newChooseAccountIntent() zu Auth.GOOGLE_SIGN_IN_API mit GoogleSignInOptions.Builder.requestIdToken(...)-Konfiguration wechseln.

Serverseitig

Die neue Log-in-API gibt ID-Token aus, die der OpenID Connect-Spezifikation entsprechen, im Gegensatz zu GoogleAuthUtil.getToken, das ein verworfenes Format verwendet. Insbesondere ist der Aussteller jetzt https://accounts.google.com mit einem https-Schema.

Während des Migrationsprozesses muss dein Server das ID-Token Ihres alten und deines neuen Android-Clients überprüfen. Nehmen Sie die folgenden Änderungen an der Clientbibliothek vor, falls Sie eine solche verwenden möchten:

  • Java (Google APIs-Clientbibliotheken): Upgrade auf 1.21.0 oder höher
  • PHP (Google APIs-Clientbibliotheken): Wenn Sie V1 verwenden, führen Sie ein Upgrade auf Version 1.1.6 oder höher aus. Wenn Sie Version 2 verwenden, führen Sie ein Upgrade auf Version 2.0.0-RC1 oder höher aus.
  • Node.js: Upgrade auf 0.9.7 oder höher
  • Python oder Ihre eigenen Implementierungen: akzeptieren Sie diese beiden Aussteller: https://accounts.google.com und accounts.google.com

Aus dem Ablauf des Authentifizierungscodes für GoogleAuthUtil migrieren

Wenn Sie GoogleAuthUtil verwenden, um einen Serverauthentifizierungscode abzurufen, müssen Sie zum neuen Auth-Codefluss der Log-in API migrieren.

Wenn dein Android-Code beispielsweise wie folgt aussieht, solltest du migrieren:

Android-Code

Im Beispiel verwenden Serverauthentifizierungscode-Anfragen oauth2:server:client_id + die Client-ID für deinen Webserver als scope-Parameter für den GoogleAuthUtil.getToken-Aufruf (oauth2:server:client_id:9414861317621.apps.googleusercontent.com).

Der neue Log-in-API-Authentifizierungscode hat folgende Vorteile:

  • Einfache Anmeldung mit nur einem Tippen
  • Wenn Sie der Anleitung unten folgen, kann Ihr Server ein ID-Token abrufen, das die Profilinformationen des Nutzers enthält, wenn Sie den Autorisierungscode austauschen

Nehmen Sie die folgenden Änderungen vor, um zum neuen Autorisierungscode zu migrieren:

Android-Clientseite

  • Entfernen Sie die Berechtigung GET_ACCOUNTS (Kontakte), wenn Sie dies anfordern.
  • Beliebigen Code mit GoogleAuthUtil, Plus.API, AccountPicker.newChooseAccountIntent() oder AccountManager.newChooseAccountIntent() zu Auth.GOOGLE_SIGN_IN_API mit GoogleSignInOptions.Builder.requestServerAuthCode(...)-Konfiguration wechseln.

Serverseitig

Behalten Sie den aktuellen Code, aber geben Sie beim Erstellen des GoogleAuthorizationCodeTokenRequest-Objekts https://oauth2.googleapis.com/token als Tokenserver-Endpunkt an, damit Sie ein ID-Token mit der E-Mail-Adresse, Nutzer-ID und Profilinformationen des Nutzers abrufen können, ohne einen weiteren Netzwerkaufruf verwenden zu müssen. Dieser Endpunkt ist vollständig abwärtskompatibel und der folgende Code funktioniert für Serverauthentifizierungscodes, die aus deiner alten und neuen Implementierungen von Android-Clients abgerufen wurden.

GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
                transport,
                jsonFactory,
                // Use below for tokenServerEncodedUrl parameter
                "https://oauth2.googleapis.com/token",
                clientSecrets.getDetails().getClientId(),
                clientSecrets.getDetails().getClientSecret(),
                authCode,
                REDIRECT_URI)
               .execute();

...

// You can also get an ID token from auth code exchange.
GoogleIdToken googleIdToken = tokenResponse.parseIdToken();
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
        .setAudience(Arrays.asList(SERVER_CLIENT_ID))
        .setIssuer("https://accounts.google.com")
        .build();
// Refer to ID token documentation to see how to get data from idToken object.
GoogleIdToken idToken = verifier.verify(idTokenString);
...