首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法通过服务帐户访问Google Calendar API

无法通过服务帐户访问Google Calendar API
EN

Stack Overflow用户
提问于 2019-05-31 02:22:28
回答 2查看 865关注 0票数 2

我试图在Java中通过一个简单的POST调用来检索我自己的忙/闲日历,但我遇到了访问错误。基本上,我得到了一个404,notFound错误,如下所示:

代码语言:javascript
复制
{
 "kind": "calendar#freeBusy",
 "timeMin": "2019-05-28T13:00:00.000Z",
 "timeMax": "2019-05-28T21:00:00.000Z",
 "calendars": {
  "me@mycompany.com": {
   "errors": [
    {
     "domain": "global",
     "reason": "notFound"
    }
   ],
   "busy": []
  }
 }
}

代码相当简单。如果我使用OAuth游乐场的持有者令牌,我可以得到我需要的东西,一切都很好。下面是我的相关代码:

代码语言:javascript
复制
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(Objects.requireNonNull(classLoader.getResource("...a59.json")).getFile());

        GoogleCredential credential = GoogleCredential
                .fromStream(new FileInputStream(file))
                .createScoped(CalendarScopes.all());

        credential.refreshToken();
        String accessToken = credential.getAccessToken();

我得到的accessToken值产生了上面的响应。

对于我的服务帐户,我已经在一个启用了Calendar API的项目中创建了它。我还授予它Project Owner的角色,这样它就可以完全访问项目中的设置。

我确信这是我的服务帐户配置中的一些小而简单的东西,但我无论如何也搞不清楚它是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-13 03:42:14

所以我自己想办法解决了这个问题。似乎我的服务帐户设置正确,但我添加的权限设置不正确。郑重声明,这是我想要的:

  1. 获取日历的只读访问权限。
  2. 能够检索我的组织中任何用户的日历。

我已经创建了服务帐户,确保它具有域范围委派授权,将Calendar和Admin API添加到拥有该服务帐户的项目中,但如果不根据上面@Alex Baban的消息将我的服务帐户添加到日历中,我将无法使其工作。

我从头开始,因为将这个添加到几十个帐户并不是一个理想的解决方案,然后我找到了它。我必须为我的服务帐户添加以下授权:

希望这能在未来帮助其他人。

票数 2
EN

Stack Overflow用户

发布于 2019-05-31 03:08:07

你还需要再走一步。

您需要与您的服务帐户共享日历。

使用文本编辑器打开您在创建服务帐户时下载的something-something.json文件,您将发现所需的电子邮件地址作为"client_email“键/值对的值。

转到您的日历“设置和共享”,然后单击"+添加人员“按钮,您可以在”与特定人员共享“下找到该按钮。

您可能已经这样做了,但对于其他人,这里是使用服务帐户访问Google Calendar的完整过程:(allow my user to add meeting in my calendar with Google Calendar API with PHP without auth)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56383653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档