web-dev-qa-db-fra.com

Comment obtenir les e-mails des utilisateurs de Google Plus oauth

Lien: https://sites.google.com/site/oauthgoog/Home/emaildisplayscope

À partir du lien ci-dessus, j'ajoute la portée de l'e-mail

https://www.googleapis.com/auth/plus.me
https://www.googleapis.com/auth/userinfo.email

Mais je ne comprends pas ce qui suit

Une fois que vous disposez d'un jeton OAuth valide), vous pouvez l'utiliser pour effectuer des appels d'API vers le point de terminaison de l'API Email Display: https: // www .googleapis.com/userinfo/email Si le jeton n'est pas valide, une erreur 401 sera renvoyée. Si le jeton est valide, l'adresse e-mail de l'utilisateur sera renvoyée. L'API renverra également une valeur booléenne pour indiquer si Google a vérifié que l'utilisateur possède cette adresse e-mail. Cependant, la plupart des applications installées ignoreront cette valeur.

Comment appeler le point de terminaison de l'API Display Email? En utilisant https://www.googleapis.com/userinfo/email

33
Marian Petrov

Définissez vos étendues sur:

Et utilisez le point de terminaison:

https://www.googleapis.com/oauth2/v1/userinfo?alt=json

Usage:

get https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token

Vous obtiendrez JSON:

{ "id": "xx", 
  "name": "xx", 
  "given_name": "xx", 
  "family_name": "xx", 
  "link": "xx", 
  "picture": "xx", 
  "gender": "xx", 
  "locale": "xx" 
}
52
Joseph Rajeev Motha

Les étendues ont changé pour la connexion à Google+.

Définissez vos étendues sur:

https://www.googleapis.com/auth/plus.login
https://www.googleapis.com/auth/userinfo.email

Les appels JavaScript ressemblent à ceci:

gapi.client.load('oauth2', 'v2', function() {
  gapi.client.oauth2.userinfo.get().execute(function(resp) {
    // Shows user email
    console.log(resp.email);
  })
});

gapi.client.load('plus', 'v1', function() {
  gapi.client.plus.people.get( {'userId' : 'me'} ).execute(function(resp) {
    // Shows profile information
    console.log(resp);
  })
});

Plus d'informations https://developers.google.com/+ .

Modifier: notez que vous n'avez pas besoin d'étendues pour plus.me ou userinfo.profile.

34
Chris Cartland

Maintenant, nous utilisons GoogleAPI avec Google+

En décembre 2013, voici le site le plus récent;

https://developers.google.com/+/

Ensuite pour SignIn for Web

https://developers.google.com/+/web/signin/

Choisir un flux de connexion

-> Flux côté client

-> Initiez le flux de connexion avec JavaScript ( je crois que c'est la dernière technologie)

https://developers.google.com/+/web/signin/javascript-flow

Lancement du flux de connexion Google+ avec JavaScript

Vous pouvez démarrer le flux de connexion Google+ en utilisant la méthode gapi.auth.signIn () . Cette méthode vous donne beaucoup de flexibilité pour décider comment et quand inviter l'utilisateur à autoriser votre application et à vous connecter.

https://developers.google.com/+/web/api/javascript#gapiauthsigninparameters

gapi.auth.signIn (paramètres)

Lance la connexion Google+ côté client OAuth 2.0. Similaire à gapi.auth.authorize (), sauf que cette méthode prend en charge les fonctionnalités avancées de connexion Google+, y compris en direct. installe des applications Android. Cette méthode est une alternative JavaScript à l'utilisation du widget du bouton de connexion Google+.

https://developers.google.com/+/web/signin/javascript-flow

  • Essayez-le Page pour déclencher le flux de connexion avec gapi.auth.signIn ()

https://google-developers.appspot.com/+/demos/signin_demo_render (SourceCode)

Vous allez essayer ceci et pour le vôtre, suivez

Étape 1: créer un ID client et un secret client

Ignorez l'étape suivante,

En fait, vous n'avez besoin que de clientID et remplacez celui du code source de Essayez-le ci-dessus.

Ajouter une étendue https://www.googleapis.com/auth/userinfo.email

var options = {
  'callback': loginFinished,
  'approvalprompt': 'force',
  'clientid': 'YOURID.apps.googleusercontent.com',
  'scope': 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email',
  'requestvisibleactions': 'http://schemas.google.com/CommentActivity http://schemas.google.com/ReviewActivity',
  'cookiepolicy': 'single_Host_Origin'
};

Ajouter

gapi.client.load('oauth2', 'v2', function()
  {
    gapi.client.oauth2.userinfo.get()
      .execute(function(resp)
      {
        // Shows user email
        console.log(resp.email);
      });
  });

Voici le code complet et concis basé sur ce qui précède:

<html>
<head>
  <title>Google+ Sign-in button demo: rendering with JavaScript</title>
  <style type="text/css">
  html, body { margin: 0; padding:0;}
  #signin-button {
   padding: 5px;
  }
  #oauth2-results pre { margin: 0; padding:0; width: 600px;}
  .hide { display: none;}
  .show { display: block;}
  </style>

  <script src="https://apis.google.com/js/client:platform.js" type="text/javascript"></script>
  <script type="text/javascript">
var loginFinished = function(authResult)
{
  if (authResult)
  {
    console.log(authResult);
  }

  gapi.client.load('oauth2', 'v2', function()
  {
    gapi.client.oauth2.userinfo.get()
      .execute(function(resp)
      {
        // Shows user email
        console.log(resp.email);
      });
  });

};

var options = {
  'callback': loginFinished,
  'approvalprompt': 'force',
  'clientid': 'YOURID.apps.googleusercontent.com',
  'scope': 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email',
  'requestvisibleactions': 'http://schemas.google.com/CommentActivity http://schemas.google.com/ReviewActivity',
  'cookiepolicy': 'single_Host_Origin'
};

var renderBtn = function()
{
  gapi.signin.render('renderMe', options);
}
  </script>

</head>
<body onload ="renderBtn()">
   <div id="renderMe"></div>  
</body>
</html>

Pas de sortie HTML, mais console. ouvrez donc les outils de la Developers Console du navigateur pour voir le résultat.

17
user1028880

Je l'ai fait dans angularjs, dans le cadre Ionic, et cela fonctionne., Essayez ceci.

controller("OauthExample", function($scope, $cordovaOauth, $http) {

    $scope.googleLogin = function() {
        $cordovaOauth.google("YOUR CLIENTID", ["https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"]).then(function(result) {
            window.localStorage.setItem("access_token", result.access_token);
            $scope.token=JSON.stringify(result);

        }, function(error) {
            console.log(error);
        });
    }


        $scope.getProfileInfo = function() {
            console.log(window.localStorage.getItem('access_token'));
        $http.defaults.headers.common.Authorization = "Bearer " + window.localStorage.getItem("access_token");
        $http.get("https://www.googleapis.com/oauth2/v1/userinfo?alt=json")
            .success(function(data) {
                console.log(data);
                console.log(data.email);
            })
            .error(function(error) {
                console.log(error);
            });
    }

});
1
Miguel Trevino