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

rob*_*ann 26 curl google-calendar-api oauth-2.0 google-oauth

我正在对以下URL进行get请求({id}替换为web界面中的id):

https://www.googleapis.com/calendar/v3/calendars/{id}
Run Code Online (Sandbox Code Playgroud)

一些断言:

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

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

    https://www.googleapis.com/auth/calendar
    
    Run Code Online (Sandbox Code Playgroud)
  3. 令牌似乎没有过期; 它适用于Analytics API.

    { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
    
    Run Code Online (Sandbox Code Playgroud)

rob*_*ann 23

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

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


aei*_*erg 7

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

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


小智 6

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

https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.readonly
Run Code Online (Sandbox Code Playgroud)