我正在尝试按照here中提供的代码创建Google日历活动。我在以下调用中将探测范围缩小到了身份验证问题:
gapi.auth.authorize({client_id: clientId, scope: 'https://www.googleapis.com/auth/calendar', immediate: true}, handleAuthResult);
不返回访问令牌。返回的auth对象如下所示:
client_id: "xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", cookie_policy: undefinederror: "immediate_failed", error_subtype: "access_denied"expires_at: "1432593971"expires_in: "86400"g_user_cookie_policy: undefinedissued_at: "1432507571"response_type: "token"scope: "https://www.googleapis.com/auth/calendar"state: ""
我知道我的日历配置是正确的(即client_id),因为我可以拉取事件并将它们放入列表see example中。这是因为阅读事件不需要OAuth 2.0 - 它只需要公共API密钥。
此外,我能够使用this Java API以编程方式创建事件 只提供我的client_id。注意底部附近的魔术按钮,它提供使用OAuth 2.0授权请求。当我启用此功能时一切正常。那么问题是如何在JavaScript /浏览器环境中以编程方式完成这项工作?
答案 0 :(得分:1)
我发现弹出窗口在我的浏览器中被阻止,这阻止了身份验证过程的完成。启用弹出窗口后,该过程就能成功完成。卫生署!代码完成后就可以了。
答案 1 :(得分:0)
奇怪。看起来谷歌不喜欢你的凭据。
您是否记得在尝试gapi.client.setApiKey(apiKey)
之前致电gapi.auth.authorize()
?
apiKey
和clientId
是否已定义并在范围内?如果您不确定,请尝试将alert(apiKey + '\n' + clientId)
或console.log(apiKey, clientId)
放在相同的功能中。