链接:https://sites.google.com/site/oauthgoog/Home/emaildisplayscope
从上面的链接我添加电子邮件范围
https://www.googleapis.com/auth/plus.me
https://www.googleapis.com/auth/userinfo.email
但我不明白以下
获得有效的OAuth令牌后,您可以使用它来对Email Display API端点进行API调用: https://www.googleapis.com/userinfo/email 如果令牌无效,将返回401错误。如果令牌有效,则将返回用户的电子邮件地址。 API还将返回一个布尔值,以指示Google是否已验证用户是否拥有该电子邮件地址。但是,大多数已安装的应用程序将忽略该值。
如何调用Email Display API端点?使用https://www.googleapis.com/userinfo/email
答案 0 :(得分:52)
将您的范围设置为:
并使用端点:
https://www.googleapis.com/oauth2/v1/userinfo?alt=json
用法:
get https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token
你会得到JSON:
{ "id": "xx",
"name": "xx",
"given_name": "xx",
"family_name": "xx",
"link": "xx",
"picture": "xx",
"gender": "xx",
"locale": "xx"
}
答案 1 :(得分:34)
Google+登录的范围已更改。
将您的范围设置为:
https://www.googleapis.com/auth/plus.login
https://www.googleapis.com/auth/userinfo.email
JavaScript调用如下所示:
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);
})
});
更多信息https://developers.google.com/+。
编辑:请注意,您不需要plus.me或userinfo.profile的范围。
答案 2 :(得分:17)
现在我们将GoogleAPI与Google +一起使用
截至2013年12月,这是最新的网站;
https://developers.google.com/+/
然后是SignIn for Web
https://developers.google.com/+/web/signin/
选择登录流程
- >客户端流程
- > 使用JavaScript启动登录流程(我相信这是最新技术)
https://developers.google.com/+/web/signin/javascript-flow
使用JavaScript启动Google+登录流程
您可以使用 gapi.auth.signIn()启动Google+登录流程 方法。这种方法为您提供了很大的灵活性来决定如何和 何时提示用户授权您的应用并登录。
https://developers.google.com/+/web/api/javascript#gapiauthsigninparameters
<强> gapi.auth.signIn(参数)强>
启动客户端Google+登录OAuth 2.0流程。相近 gapi.auth.authorize()除了这个方法支持高级 Google+登录功能,包括Android的无线安装 应用。此方法是使用Google+的JavaScript替代方法 登录按钮小部件。
https://developers.google.com/+/web/signin/javascript-flow
https://google-developers.appspot.com/+/demos/signin_demo_render(SourceCode)
您将尝试使用此功能,并按照
进行操作步骤1:创建客户端ID和客户端密钥
忽略以下步骤
实际上,您只需要clientID并替换上面尝试源代码中的一个。
添加范围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'
};
添加
gapi.client.load('oauth2', 'v2', function()
{
gapi.client.oauth2.userinfo.get()
.execute(function(resp)
{
// Shows user email
console.log(resp.email);
});
});
以下是基于以上内容的完整工作和简明代码:
<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>
答案 3 :(得分:1)
我在angularjs中,在Ionic框架中做到了这一点,并且它有效。试试这个。
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);
});
}
});