Effectuer une migration depuis Google+ Sign-In

Étapes pour minimiser l'impact des changements de portée sur les utilisateurs

  1. Si votre application nécessite l'adresse e-mail d'un utilisateur authentifié et que vous avez déjà utilisé profile.emails.read à cette fin, utilisez plutôt email.
  2. Obtenez l'approbation de profile.emails.read à l'aide d'une demande de validation approuvée. Consultez Comment envoyer pour validation ?
  3. Révoquer le jeton utilisateur précédent au niveau d'accès qui doit être supprimé ou supprimer complètement l'accès à l'application. Par exemple, un jeton avec l'accès profile.emails.read doit être révoqué. Nous vous recommandons d'appliquer la révocation pendant que les utilisateurs se trouvent dans votre application afin d'obtenir leur consentement immédiatement.
  4. Invitez vos utilisateurs à redonner leur consentement pour le nouveau champ d'application, par exemple email, sans profile.emails.read.
  5. Supprimez le champ d'application à supprimer de la configuration de l'écran de consentement OAuth des API Google.

Les modifications que vous devez apporter pour migrer votre site de Google+ Sign-In vers Google Sign-In dépendent du flux Google+ Sign-In que vous utilisez. En règle générale, la migration nécessite que vous mettiez à jour votre bouton de connexion, les champs d'application demandés et des instructions sur la manière de récupérer les informations de profil auprès de Google.

Lorsque vous mettez à jour votre bouton de connexion, ne faites pas référence à Google+ et n'utilisez pas la couleur rouge. respecter nos consignes relatives à la marque mises à jour ;

La plupart des applications Google+ Sign-In ont demandé une combinaison des champs d'application : plus.login, plus.me et plus.profile.emails.read. Vous devez remapper vos champs d'application comme suit:

Ancien champ d'application Nouveau champ d'application
plus.login profile
plus.me openid
plus.profile.emails.read email

De nombreux développeurs de Google+ Sign-In ont utilisé le flux de code. Cela signifie que les applications Android, iOS ou JavaScript obtiennent un code OAuth de Google, et que le client renvoie ce code au serveur, ainsi qu'une protection contre la falsification de requêtes intersites. Le serveur valide ensuite le code et obtient des jetons d'actualisation et d'accès pour extraire les informations de profil utilisateur de l'API people.get.

Google vous recommande désormais de demander un jeton d'ID et de l'envoyer de votre client à votre serveur. Les jetons d'ID sont dotés de protections contre la falsification intersites et peuvent également être validés de manière statique sur votre serveur. Cela évite un appel d'API supplémentaire pour obtenir des informations de profil utilisateur à partir des serveurs de Google. Suivez les instructions pour valider les jetons d'identification sur votre serveur.

Si vous préférez toujours utiliser le flux de code pour obtenir des informations de profil, vous pouvez le faire. Une fois que votre serveur dispose d'un jeton d'accès, vous devez obtenir des informations de profil utilisateur à partir des points de terminaison userinfo spécifiés dans notre document de découverte de connexion. Le format de la réponse de l'API est différent de celui de la réponse du profil Google+. Vous devez donc mettre à jour votre analyse pour utiliser le nouveau format.

Migrer un bouton de connexion HTML

Si vous avez inclus un bouton Google+ Sign-In sur votre page en attribuant la classe g-signin à un élément, apportez les modifications suivantes:

  • Lorsque vous spécifiez votre ID client dans une balise <meta>, un attribut data- ou un objet de paramètres, remplacez la chaîne clientid par client_id, comme dans l'exemple suivant:

    <!-- 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">
    
  • Attribuez la classe g-signin2 à l'élément du bouton de connexion au lieu de g-signin. Spécifiez également des rappels de réussite et d'échec distincts au lieu d'un seul rappel, comme dans l'exemple suivant:

    <!-- 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>
    
  • Au lieu d'un seul gestionnaire de rappel, définissez des gestionnaires de réussite et d'échec, comme dans l'exemple suivant:

    // 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
    }
    
  • Ces modifications font passer vos champs d'application par défaut à profile email openid. Pour obtenir les informations de profil de base de l'utilisateur, telles que son nom, son adresse e-mail et l'URL de l'image de la photo, procédez comme suit:

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

Migrer un bouton de connexion affiché de manière dynamique

Si vous avez inclus un bouton Google+ Sign-In dans votre page en appelant gapi.signin.render(), apportez les modifications suivantes:

  • Lorsque vous spécifiez votre ID client dans une balise <meta>, un attribut data- ou un objet de paramètres, remplacez la chaîne clientid par client_id, comme dans l'exemple suivant:

    <!-- 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">
    
  • Affichez le bouton de connexion avec gapi.signin2.render() au lieu de gapi.signin.render(), comme dans l'exemple suivant:

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

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Au lieu d'un seul gestionnaire de rappel, définissez des gestionnaires de réussite et d'échec, comme dans l'exemple suivant:

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

Ces modifications font passer vos champs d'application par défaut à profile email openid. Vous pouvez obtenir les informations de profil de base de l'utilisateur avec la méthode getBasicProfile().

Migrer un flux de connexion initié par JavaScript

Si vous avez lancé le flux de connexion avec un appel à gapi.auth.signIn() lorsque les utilisateurs cliquent sur le bouton de connexion, apportez les modifications suivantes:

  • Lorsque vous spécifiez votre ID client dans une balise <meta>, un attribut data- ou un objet de paramètres, remplacez la chaîne clientid par client_id, comme dans l'exemple suivant:

    <!-- 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">
    
  • Utilisez gapi.auth2.attachClickHandler() pour démarrer le flux de connexion lorsque l'utilisateur appuie sur un bouton, comme dans l'exemple suivant:

    // 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);
    
  • Au lieu d'un seul gestionnaire de rappel, définissez des gestionnaires de réussite et d'échec, comme dans l'exemple suivant:

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

Ces modifications font passer vos champs d'application par défaut à profile email openid. Vous pouvez obtenir les informations de profil de base de l'utilisateur en appelant la méthode getBasicProfile().

Migrer un flux hybride côté serveur

Si vous avez utilisé l'API JavaScript pour obtenir un code d'autorisation à usage unique à transmettre à votre serveur, apportez les modifications suivantes:

  • Remplacez le champ d'application https://www.googleapis.com/auth/plus.login par profile.

  • Utilisez la méthode gapi.auth2.grantOfflineAccess() avec votre fonction de rappel existante, comme dans l'exemple suivant:

    <!-- 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);
    

Si vous avez également besoin d'accéder à l'adresse e-mail de l'utilisateur, ajoutez email au paramètre de champ d'application.