【发布时间】:2017-06-26 08:09:00
【问题描述】:
我们构建了一个尝试使用服务帐户访问 google Calendar API 的应用程序。我们自己管理应用程序,但我们尝试访问的日历位于单独的 GSuite 帐户中。我们已让 GSuite 管理员按照步骤 here 允许基于客户端 ID 和“https://www.googleapis.com/auth/calendar.readonly”的身份验证范围访问我们的应用程序。
现在,当使用服务帐户尝试访问用户日历数据时,我对如何正确格式化请求有点困惑。具体来说,如果我不包含“sub”参数,则该请求在我被授予令牌并且我能够继续发出访问日历的后续请求的意义上起作用。然而,在随后的请求中,我收到了用户日历上的错误,表明未找到,即我无权访问。以下是请求:
String jwtClaimset = '{'+
'"iss":"xxxxx@service-account.com",'+
'"sub":"xxxxxx@xxxx.com",'+
'"scope":"https://www.googleapis.com/auth/calendar.readonly",'+
'"aud":"https://www.googleapis.com/oauth2/v4/token",'+
'"exp":'+expTime+','+
'"iat":'+requestTime+
'}';
但是,如果我包含来自 GSuite 帐户的特定电子邮件/用户名以“模拟”,我根本无法请求令牌,我会看到以下错误:
"error_description": "客户端未经授权无法使用此方法检索访问令牌。"
所以我的问题是,我是否需要 sub 参数才能访问 GSuite 中的任何用户日历?如果需要,您知道为什么会出现该错误吗?
【问题讨论】:
标签: calendar google-api google-calendar-api