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
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"
}
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.
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
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>
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);
});
}
});