Von Google+ Log-in migrieren

Schritte zur Minimierung der Auswirkungen von Änderungen am Geltungsbereich auf Nutzer

  1. Wenn für Ihre Anwendung die E-Mail-Adresse eines authentifizierten Nutzers erforderlich ist und Sie zuvor profile.emails.read für diesen Zweck verwendet haben, nutzen Sie stattdessen email.
  2. Sie erhalten die Genehmigung für profile.emails.read mit einer genehmigten Überprüfungsanfrage. Weitere Informationen finden Sie unter Wie reiche ich eine App zur Überprüfung ein?
  3. Widerrufen Sie das vorherige Nutzertoken für den zu entfernenden Bereich oder entfernen Sie den Zugriff auf die Anwendung vollständig. Beispielsweise sollte ein Token mit profile.emails.read-Zugriff widerrufen werden. Wir empfehlen, den Widerruf anzuwenden, während sich Ihre Nutzer in Ihrer App befinden, damit Sie die Nutzereinwilligung sofort einholen können.
  4. Bitten Sie die Nutzer, ihre Einwilligung für den neuen Umfang zu erteilen, z. B. email ohne profile.emails.read.
  5. Entfernen Sie den Bereich, der eingestellt werden soll, aus der Konfiguration des OAuth-Zustimmungsbildschirms Ihrer Google APIs.

Welche Änderungen Sie vornehmen müssen, um Ihre Website vom Google+ Log-in zu Google Log-in zu migrieren, hängt davon ab, welchen Google+ Log-in-Vorgang Sie verwenden. Im Allgemeinen müssen Sie für die Migration Ihre Anmeldeschaltfläche, die angeforderten Zugriffsbereiche und die Anleitung zum Abrufen von Profilinformationen von Google aktualisieren.

Wenn Sie Ihre Anmeldeschaltfläche aktualisieren, beziehen Sie sich nicht auf Google+ und verwenden Sie nicht die Farbe Rot. Sie müssen unseren aktualisierten Branding-Richtlinien entsprechen.

Die meisten G+ Sign-In-Anwendungen haben eine Kombination der folgenden Berechtigungen angefordert: plus.login, plus.me und plus.profile.emails.read. Sie müssen Ihre Bereiche so neu zuordnen:

Alter Bereich Neuer Bereich
plus.login profile
plus.me openid
plus.profile.emails.read email

Viele Implementierer der Google+-Anmeldung haben den Codeablauf verwendet. Das bedeutet, dass die Android-, iOS- oder JavaScript-Apps einen OAuth-Code von Google erhalten und der Client diesen Code zusammen mit dem websiteübergreifenden Request-Fälschungsschutz an den Server zurücksendet. Der Server validiert dann den Code und ruft Aktualisierungs- und Zugriffstokens ab, um Nutzerprofilinformationen aus der people.get API abzurufen.

Google empfiehlt jetzt, ein ID-Token anzufordern und dieses von Ihrem Client an Ihren Server zu senden. ID-Tokens bieten integrierten websiteübergreifenden Schutz vor Manipulationen und können auch statisch auf Ihrem Server überprüft werden. Dadurch wird ein zusätzlicher API-Aufruf vermieden, um Nutzerprofilinformationen von den Google-Servern abzurufen. Folge der Anleitung, um ID-Tokens auf deinem Server zu validieren.

Wenn Sie Profilinformationen weiterhin über den Codeablauf abrufen möchten, können Sie dies tun. Sobald Ihr Server ein Zugriffstoken hat, müssen Sie Nutzerprofilinformationen von den userinfo-Endpunkten abrufen, die im Discovery-Dokument für Anmeldungen angegeben sind. Die API-Antwort ist anders formatiert als die Antwort des Google+-Profils. Sie müssen das Parsen daher auf das neue Format umstellen.

Schaltfläche „HTML-Anmeldung migrieren“

Wenn Sie eine Google+-Anmeldeschaltfläche auf Ihrer Seite eingefügt haben, indem Sie einem Element die Klasse g-signin zugewiesen haben, nehmen Sie die folgenden Änderungen vor:

  • Wenn Sie die Client-ID entweder in einem <meta>-Tag, einem data--Attribut oder einem Parameters-Objekt angeben, ändern Sie den String clientid in client_id, wie im folgenden Beispiel:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Weisen Sie dem Element für die Anmeldeschaltfläche die Klasse g-signin2 anstelle von g-signin zu. Geben Sie außerdem separate Erfolgs- und Fehler-Callbacks anstelle eines einzelnen Callbacks an, wie im folgenden Beispiel gezeigt:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • Definiere anstelle eines einzelnen Callback-Handlers einen Erfolgs- und einen Fehler-Handler, wie im folgenden Beispiel:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • Durch diese Änderungen werden Ihre Standardbereiche auf profile email openid aktualisiert. So rufen Sie die grundlegenden Profilinformationen des Nutzers ab, z. B. Name, E-Mail-Adresse und URL des Fotobilds:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Dynamisch gerenderte Anmeldeschaltfläche migrieren

Wenn Sie auf Ihrer Seite eine Google+-Anmeldeschaltfläche eingefügt haben, indem Sie gapi.signin.render() aufgerufen haben, nehmen Sie die folgenden Änderungen vor:

  • Wenn Sie die Client-ID entweder in einem <meta>-Tag, einem data--Attribut oder einem Parameters-Objekt angeben, ändern Sie den String clientid in client_id, wie im folgenden Beispiel:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Rendere die Anmeldeschaltfläche mit gapi.signin2.render() anstelle von gapi.signin.render(), wie im folgenden Beispiel:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Definiere anstelle eines einzelnen Callback-Handlers einen Erfolgs- und einen Fehler-Handler, wie im folgenden Beispiel:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Durch diese Änderungen werden Ihre Standardbereiche auf profile email openid aktualisiert. Mit der getBasicProfile()-Methode kannst du die grundlegenden Profilinformationen des Nutzers abrufen.

Von JavaScript initiierten Anmeldevorgang migrieren

Wenn du den Anmeldevorgang mit einem Aufruf von gapi.auth.signIn() gestartet hast, als Nutzer auf die Anmeldeschaltfläche klicken, nimm die folgenden Änderungen vor:

  • Wenn Sie die Client-ID entweder in einem <meta>-Tag, einem data--Attribut oder einem Parameters-Objekt angeben, ändern Sie den String clientid in client_id, wie im folgenden Beispiel:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Verwenden Sie gapi.auth2.attachClickHandler(), um den Anmeldevorgang zu starten, wenn eine Schaltfläche gedrückt wird, wie im folgenden Beispiel:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • Definiere anstelle eines einzelnen Callback-Handlers einen Erfolgs- und einen Fehler-Handler, wie im folgenden Beispiel:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Durch diese Änderungen werden Ihre Standardbereiche auf profile email openid aktualisiert. Die grundlegenden Profilinformationen des Nutzers können Sie durch einen Aufruf der Methode getBasicProfile() abrufen.

Hybriden serverseitigen Ablauf migrieren

Wenn Sie die JavaScript API verwendet haben, um einen einmaligen Autorisierungscode abzurufen, den Sie an Ihren Server weitergeben, nehmen Sie die folgenden Änderungen vor:

  • Ändern Sie den Bereich von https://www.googleapis.com/auth/plus.login in profile.

  • Verwenden Sie die Methode gapi.auth2.grantOfflineAccess() mit Ihrer vorhandenen Callback-Funktion wie im folgenden Beispiel:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

Wenn Sie auch Zugriff auf die E-Mail-Adresse des Nutzers benötigen, fügen Sie dem Parameter „scope“ die Zahl email hinzu.