我正在尝试使用google-oauth2登录时获取用户个人资料信息。用户成功登录,我可以获得access_token,并可以在需要时刷新令牌。 虽然我无法获得有关用户的任何信息,尽管阅读文档并尝试了几个小时。
来自developers guide的“检索个人资料”部分:
https://www.google.com/m8/feeds/profiles/domain/domainName/full
应该足够了。我尝试使用“gmail.com”,“google.com”,“gmail”,“google”,“orkut”,“orkut.com”,myregisteredtedappsdomainname(和.com)作为domainName。我也尝试了
https://www.google.com/m8/feeds/profiles/domain/domainName/full?access_token=access_token_for_user
我设法获得的是401错误,其中显示“那是一个错误。”。关于401错误,我已刷新令牌并再次使用新令牌,但仍然获得401s。
如何在登录时获取用户的个人资料信息和图片地址?
答案 0 :(得分:2)
答案 1 :(得分:1)
即使在正确定义范围和访问令牌等之后,我也会收到类似的错误请求配置文件。我的诀窍是在我的请求中包含API版本。有关详细信息,请参阅此处http://code.google.com/googleapps/domain/profiles/developers_guide.html#Versioning
答案 2 :(得分:0)
也许很晚才能对某人有所帮助。下面是我为获取gplus用户个人资料而编写的工作代码
在HTML下面,标记将显示goolge signIn按钮
<span id="signinButton">
<span
class="g-signin"
data-callback="signinCallback"
data-clientid="YOUR GPLUS CLIENT ID"
data-cookiepolicy="single_host_origin"
data-scope="email">
</span>
</span>
以下是java脚本
var access_token;
/**
* Called when the Google+ client library reports authorization status.
*/
function signinCallback(authResult) {
access_token = authResult.access_token;
gapi.client.load('plus', 'v1', function () {
gapi.client.plus.people.get({ userId: 'me' }).execute(printProfile);
});
}
/**
* Response callback for when the API client receives a response.
*
* @param resp The API response object with the user email and profile information.
*/
function printProfile(resp) {
if (resp.code != 403) {
console.log('name:' + access_token.givenname);
console.log('last name:' + access_token.lastname);
console.log('email:' + access_token.emails[0]);
console.log('gender:' + access_token.gender);
console.log('profile image url:' + access_token.image.url);
}
}
请确保您在body标签内异步加载google api javascript,如下所示
<script type="text/javascript">
(function () {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/platform.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>
要处理注销请参考我在下面链接中提供的答案,你需要在后端存储access_token,以便在注销时调用它来使用,在我的情况下我已经存储在会话中并通过ajax调用 gapi.auth.signOut(); not working I'm lost
答案 3 :(得分:-1)
嘿,你为什么不看看给出的代码: http://www.codeproject.com/KB/aspnet/OAuth4Client.aspx
它绝对有助于你。该项目实际上是一个oauth游乐场,可以将正确的oauth标头发送到正确的端点。