Von Google+ Log-in migrieren

Schritte zur Minimierung der Auswirkungen von Änderungen am Umfang auf die Nutzer

  1. Wenn in Ihrer 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. Holen Sie mit einer genehmigten Bestätigungsanfrage die Genehmigung für profile.emails.read ein. Weitere Informationen finden Sie im Hilfeartikel Wie reiche ich das Formular zur Überprüfung ein?
  3. Widerrufen Sie das vorherige Nutzertoken auf den Bereich, der entfernt werden soll, 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 vorzunehmen, während sich die Nutzer in Ihrer Anwendung befinden, damit Sie sofort die Einwilligung der Nutzer einholen können.
  4. Fordern Sie Ihre Nutzer auf, dem neuen Umfang, z. B. email, noch einmal zuzustimmen, ohne profile.emails.read.
  5. Entfernen Sie den Bereich, der aus der Konfiguration des OAuth-Zustimmungsbildschirms für Google APIs eingestellt werden soll.

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

Wenn Sie Ihre Anmeldeschaltfläche aktualisieren, beziehen Sie sich nicht auf Google+ und verwenden Sie nicht die Farbe Rot. Es muss unseren aktualisierten Markenrichtlinien entsprechen.

Die meisten G+ Log-in-Anwendungen haben eine Kombination der Bereiche 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 von Google+ Log-in haben den Codefluss 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 Ihnen jetzt, ein ID-Token anzufordern und dieses von Ihrem Client an Ihren Server zu senden. ID-Tokens haben einen integrierten Schutz vor websiteübergreifenden Fälschungen und können auch statisch auf Ihrem Server verifiziert werden. Dadurch wird ein zusätzlicher API-Aufruf zum Abrufen von Nutzerprofilinformationen von den Google-Servern vermieden. Folgen Sie der Anleitung zum Validieren von ID-Tokens auf Ihrem Server.

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 in unserem Discovery-Dokument für Anmeldungen angegeben sind. Die API-Antwort ist anders formatiert als die Google+ Profilantwort. Daher müssen Sie das Parsing auf das neue Format aktualisieren.

Schaltfläche „HTML-Anmeldung migrieren“

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

  • Wenn du deine Client-ID in einem <meta>-Tag, einem data--Attribut oder einem Parameterobjekt angibst, ändere den String clientid wie im folgenden Beispiel in client_id:

    <!-- 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>
    
  • Definieren Sie anstelle eines einzelnen Callback-Handlers Erfolgs- und 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 du durch Aufrufen von gapi.signin.render() eine Google+ Log-in-Schaltfläche in deine Seite eingefügt hast, nimm die folgenden Änderungen vor:

  • Wenn du deine Client-ID in einem <meta>-Tag, einem data--Attribut oder einem Parameterobjekt angibst, ändere den String clientid wie im folgenden Beispiel in client_id:

    <!-- 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">
    
  • Rendern Sie die Anmeldeschaltfläche mit gapi.signin2.render() statt 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);
    
  • Definieren Sie anstelle eines einzelnen Callback-Handlers Erfolgs- und 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 mit der Methode getBasicProfile() 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 du deine Client-ID in einem <meta>-Tag, einem data--Attribut oder einem Parameterobjekt angibst, ändere den String clientid wie im folgenden Beispiel in client_id:

    <!-- 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">
    
  • Verwende 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);
    
  • Definieren Sie anstelle eines einzelnen Callback-Handlers Erfolgs- und 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.

Serverseitigen Hybridablauf migrieren

Wenn Sie die JavaScript API verwendet haben, um einen einmaligen Autorisierungscode zu erhalten, den Sie an Ihren Server übergeben müssen, 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 Bereichsparameter email hinzu.