【发布时间】:2013-11-19 02:28:53
【问题描述】:
我正在尝试使用 Oauth2 从我的 javascript 客户端访问一些谷歌 API。我已经成功地让用户对请求进行身份验证,但是在运行下面的代码时会出现一些我想了解的意外行为。当我第一次点击“授权”按钮时,结果是:
'[ { "error": { "code": 401, "message": "需要登录", "data": [ { "domain": "global", "reason": "required", "message ": "需要登录", "locationType": "header", "location": "Authorization" } ] }, "id": "gapiRpc" } ] '
第二次点击的结果是
[ { "id": "gapiRpc", "result": { "id": "1115793426680xxxx", "email": "xxxxx@gmail.com", "verified_email": true } } ]
这是我正在测试的页面的代码
<div id='sign in'>
<button onclick="init();">Authorize</button>
</div>
<p id="output">hello</p>
<script type="text/javascript">
function init() {
document.getElementById('output').innerHTML='loading oauth2 api'
gapi.client.load('oauth2', 'v2', auth);
}
function auth() {
var config = {
client_id: '2264xxxxx-odt0g7jn8vspa3ot9ogjxxxxxxxxx.apps.googleusercontent.com',
scope: 'https://www.googleapis.com/auth/userinfo.email',
immediate:true
};
document.getElementById('output').innerHTML='authorizing'
gapi.auth.authorize(config, authed());
}
function authed() {
document.getElementById('output').innerHTML='authorized'
var request = gapi.client.oauth2.userinfo.get().execute(
function(resp, raw) {
document.getElementById('output').innerHTML=raw
}
);
}
</script>
<script src="https://apis.google.com/js/client.js"></script>
<!--<script src="https://apis.google.com/js/client.js?onload=init"></script>-->
您能否解释一下为什么我会在第一次执行代码时获得“需要登录”而在第二次执行时获得成功的身份验证?
【问题讨论】:
标签: javascript oauth-2.0 google-oauth