我正在构建Google App Engine应用并运行以下代码
<!DOCTYPE html>
<html manifest="cache.appcache">
<head>
<title>Eat Fresh</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script src="scripts/whitelist.js" type="text/javascript"></script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>
</head>
<body>
</body>
</html>
function init() {
CLIENT_ID = "my client ID"
SCOPES = ["https://www.googleapis.com/auth/userinfo.email"]
gapi.client.load('oauth2', 'v2', signin)
}
function signin() {
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: true}, userAuthed)
}
function userAuthed() {
gapi.client.oauth2.userinfo.get().execute(function(resp) {
checkEmail(resp)
})
}
function checkEmail(user) {
console.log(user)
var validEmail = (whiteList.indexOf(user.email) !== -1)
if (!user.code && validEmail) {
startApp()
} else {
displayError(user.email)
}
}
这是返回
Object {code: 401, message: "Invalid Credentials", data: Array[1], error: Object}
我用Google搜索并用谷歌搜索,无法找到为什么会发生这种情况。上面使用的代码直接来自我的另一个Google App Engine项目,它在那里完美运行。此外,如果我记得,我在项目中收到了类似的消息,我从中获取了此代码,并通过更改https://appengine.google.com/或https://console.developers.google.com/project上的设置进行了修复。
我看了看,找不到第一次帮我修好的网页。我对设置的猜测可能完全不正确,但这是我的预感。
答案 0 :(得分:2)
发生这种情况的原因是因为来自
的访问令牌gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: true}, userAuthed)
返回undefined。这是因为该应用无权授权该应用查看Google +帐户数据。更改以下内容
immediate: false
将提示用户授予应用程序权限,从而允许授权访问令牌和其余代码工作。