【问题标题】:Google Calendar API FreeBusy Access Using Service AccountGoogle Calendar API FreeBusy 使用服务帐户访问
【发布时间】: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


    【解决方案1】:

    而且我不知道发生了什么,也许 GSuite 权限/访问更新需要时间,但现在它正在工作。

    请注意,我们正在使用 sub 参数及其使用它的工作(正如我们怀疑我们需要的那样)。

    【讨论】:

    • 嗨,乔治。我正在尝试在 NodeJs 中编写一些 API,这些 API 可以列出用户的事件并在他们的日历中创建事件。我们组织的邮件帐户和日历在 gsuite 上。我已经尝试使用基于 JWT 的身份验证的 nodejs 的 googleapis 包,但它没有为主要用户显示任何事件。不确定服务帐户凭据将如何模拟其他用户帐户。你能指导我完成这个过程吗?
    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2018-10-06
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多