Comment obtenir l'email de l'utilisateur 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'email

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 avez 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 retourné. Si le jeton est valide, l'adresse e-mail de l'Utilisateur sera retournée. L'API retournera é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 faire un appel au point de terminaison de L'API Email Display? À l'aide de https://www.googleapis.com/userinfo/email

32
demandé sur Kara 2012-07-23 07:25:08

4 réponses

Définissez vos étendues sur:

Et utilisez le point de terminaison:

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

Utilisation:

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" 
}
47
répondu Joseph Rajeev Motha 2017-02-07 15:04:28

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

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

34
répondu Chris Cartland 2013-03-13 12:12:07

Maintenant, nous utilisons GoogleAPI avec Google +

Comme en décembre 2013, voici le site le plus mis à jour;

Https://developers.google.com/+/

Puis pour SignIn pour le Web

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

Choisir un flux de connexion

- > flux côté Client

->initier le flux de connexion avec JavaScript (je crois que c'est le dernier la technologie de)

Https://developers.google.com/+/web/signin/javascript-flux de

Lancer le flux de connexion Google + avec JavaScript

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

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

Gapi.auth.signIn(paramètres)

Initie le flux OAuth 2.0 de connexion Google+ côté client. Semblable à gapi.auth.authorize() sauf que cette méthode prend en charge la fonction Fonctionnalités de connexion Google+, y compris les installations en direct D'Android des apps. Cette méthode est une alternative JavaScript à L'utilisation de Google+ Bouton de connexion widget.

Https://developers.google.com/+/web/signin/javascript-flux de

  • essayez la page pour déclencher le flux de connexion avec gapi.auth.signIn ()

Https://google-developers.appspot.com/+/demos/signin_demo_render (code Source)

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

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

Ignorer l'étape suivante,

En fait, vous avez besoin clientID seulement et remplacer celui dans le code source de essayez-le ci-dessus.

Ajouter la portée 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. alors ouvrez les outils de console des développeurs du navigateur pour afficher le résultat.

17
répondu Ken OKABE 2013-12-10 12:04:02

Je l'ai fait dans angularjs, dans le cadre ionique, 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
répondu Miguel Treviño Morales 2015-10-16 17:02:31