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 bisher profile.emails.read zu diesem Zweck verwendet haben, verwenden 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 die Anmeldeschaltfläche, die angeforderten Zugriffsbereiche und die Anleitung zum Abrufen von Profilinformationen von Google aktualisieren.

Wenn Sie Ihre Anmeldeschaltfläche aktualisieren, dürfen Sie weder auf G+ Bezug nehmen noch die Farbe Rot verwenden. 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 Umfang 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 abrufen und der Client diesen Code zusammen mit dem Schutz vor Website-übergreifender Anfragefälschung 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 lieber über den Codeablauf abrufen möchten, können Sie das tun. Sobald Ihr Server ein Zugriffstoken hat, müssen Sie Nutzerprofilinformationen über die userinfo-Endpunkte abrufen, die in unserem Discovery-Dokument zur Anmeldung 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.

HTML-Anmeldeschaltfläche migrieren

Wenn Sie auf Ihrer Seite eine Google+-Anmeldeschaltfläche 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 „Anmeldeschaltfläche“ die Klasse g-signin2 anstelle von g-signin zu. Geben Sie außerdem separate Erfolgs- und Fehler-Callbacks an, anstatt einen einzelnen Callback, wie im folgenden Beispiel:

    <!-- 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 kannst du die allgemeinen Profilinformationen des Nutzers wie Name, E-Mail-Adresse und Fotobild-URL abrufen:

    // 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.

JavaScript-initiierten Anmeldevorgang migrieren

Wenn Sie den Anmeldevorgang mit einem Aufruf von gapi.auth.signIn() gestartet haben, wenn Nutzer auf die Anmeldeschaltfläche klicken, 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">
    
  • 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. Sie können die grundlegenden Profilinformationen des Nutzers 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 Umfang von https://www.googleapis.com/auth/plus.login in profile.

  • Verwenden Sie die Methode gapi.auth2.grantOfflineAccess() mit Ihrer vorhandenen Rückruffunktion, 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.