使用服务帐户进行Google Calendar API FreeBusy访问

时间:2017-02-08 15:50:26

标签: calendar google-api google-calendar-api

我们构建了一个试图使用服务帐户访问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中的任何用户日历?如果是这样,你知道为什么会出现这个错误吗?

1 个答案:

答案 0 :(得分:2)

我不知道发生了什么可能只是花了一些时间来获得GSuite权限/访问更新,但现在这样做了。

注意,我们正在使用sub参数及其工作(我们怀疑我们需要)。