在JavaScript中无法验证在谷歌日历(V3)使用OAuth 2.0 API(Cannot Au

2019-10-28 16:32发布

我试图创建谷歌日历事件,每给定的代码在这里 。 我已经收窄probem下降到下面的调用的身份验证问题:

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),因为我可以拉的事件,并将它们放到一个列表见例子 。 这是因为读取事件不需要的OAuth 2.0 - 只需要一个公共的API密钥。

此外,我可以以编程方式创建活动使用此API的Java只提供我的CLIENT_ID。 注意其附近提供了授权使用OAuth 2.0请求底部的神奇的按钮。 当我启用这个一切工作正常。 所以,问题是这是怎么在JavaScript /浏览器环境中编程做了什么?

Answer 1:

我已经发现,弹出窗口被挡在我的浏览器,这防止了认证过程无法完成。 一旦我启用弹出窗口,这个过程能够顺利完成。 卫生署! 代码完成和确定毕竟。



Answer 2:

奇怪的。 看起来谷歌不喜欢您的凭据。

  1. 你是否记起了给gapi.client.setApiKey(apiKey)尝试之前gapi.auth.authorize()

  2. apiKeyclientId共同定义和范围? 如果你不知道,尝试坚持alert(apiKey + '\n' + clientId)console.log(apiKey, clientId)在相同的功能。



文章来源: Cannot Authenticate using OAuth 2.0 in Google Calendar (v3) API in JavaScript