为什么Google Calendar API(oauth2)会回复“权限不足”?

时间:2013-06-06 19:48:22

标签: curl oauth-2.0 google-calendar-api google-oauth

我正在对以下网址发送请求(将{id}替换为网络界面中的ID):

https://www.googleapis.com/calendar/v3/calendars/{id}

一些断言:

  1. 使用有效的访问令牌正确设置了Authorize标头(该令牌适用于Analytics API)

  2. 我为oauth2设置了以下范围,它正确显示:

    https://www.googleapis.com/auth/calendar
    
  3. 令牌似乎没有过期;它适用于Analytics API。

    { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
    

8 个答案:

答案 0 :(得分:21)

要解决此问题,我撤消了对https://accounts.google.com/IssuedAuthSubTokens处应用的访问权限,并在之后重试,我能够正确访问API。

尽管列表中包含范围,并且范围显示在Google的OAuth2授权页面上,但未授予其他范围。

答案 1 :(得分:7)

我会仔细检查范围是否包括在内 - 当我请求错误的范围时,我已经看到了确切的消息。访问https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx是一种验证的好方法。

假设检出,请确保您拥有访问令牌的用户有权查看您尝试访问的日历。 “Gears”图标 - > “设置” - > “日历” - > (选择日历) - > “分享这个日历”

答案 2 :(得分:6)

添加日历visit calendar api的范围并检查访问配置

https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.readonly

答案 3 :(得分:2)

我必须包含Google Plus范围才能获得访问日历的足够权限:

所以我的scope最终看起来像这样:

'https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/plus.login'

答案 4 :(得分:1)

在“快速入门”中进行示例时,我可以从日历中获取事件列表。
但是我正在使用SCOPE ='https://www.googleapis.com/auth/calendar.readonly'。

当我执行代码时,将生成一个链接,在该链接中,我必须创建一个密钥以允许从Calendar中列出事件。 因此,当我尝试插入事件时,出现此错误INSUFICIENT PERMISSION。

解决此问题的方法:
1)我将范围更改为https://www.googleapis.com/auth/calendar
2)删除文件token.json
3)再次执行代码,我必须创建一个新的权限密钥,现在已获得插入新事件的权限。

答案 5 :(得分:0)

我必须删除我的应用程序的权限,然后返回以在https://security.google.com/settings/security/permissions

中授予权限

答案 6 :(得分:0)

尝试在Google日历中添加活动时遇到了同样的问题。 我最终如何解决这个问题:

  • 删除我的文件'credentials.json'
  • 启动一个Python程序,该程序类似于用“ SCOPES ='https://www.googleapis.com/auth/calendar'”编写的Google快速入门程序。该程序是唯一对我有用的解决方案。启动django命令来调用我的实际工作对我不起作用。但这解决了我的权限问题。

然后,它打开您的浏览器,并且google询问您的许可来管理您的日历并在您的资源库中创建一个新的'credentials.json'。

答案 7 :(得分:0)

添加或编辑事件时,我也面临同样的问题。经过一番谷歌搜索后,我发现,一个范围将授予您所有权限-

https://www.googleapis.com/auth/calendar