授权个人帐户,但没有对谷歌的域帐户谷歌日历API作品(authorize google calend

2019-07-05 07:47发布

我需要存储中的日历事件谷歌域内员工的Java应用程序。 我创建的应用程序基于样本我发现http://code.google.com/p/google-api-java-client/wiki/APIs#Calendar_API

现在,我想让它在一个帐户从谷歌域工作,突然我被困。 我有一个新的改变client_secrets.json档案。 在code.google.com/apis/console生成安装的应用程序,现在我得到一个无效的客户端错误:

EX =(com.google.api.client.auth.oauth2.TokenResponseException)com.google.api.client.auth.oauth2.TokenResponseException:400错误的请求{ “错误”: “unauthorized_client”}

我需要为此做其他步骤? 此外,它需要所有账户默认域不是单一帐户内工作的。 也许其它控制台? 我希望不是其他图书馆。

Answer 1:

要访问域中的所有帐户,你需要使用一个服务帐户:

https://developers.google.com/accounts/docs/OAuth2ServiceAccount

而这个环节是特定于驱动API,它应该给你一些代码示例,很容易适应日历API第3版:

https://developers.google.com/drive/delegation



Answer 2:

以供将来参考我用下面的代码的授权谷歌日历

   java.io.File licenseFile = new java.io.File("39790cb51b361f51cab6940d165c6cda4dc60177-privatekey.p12");

   GoogleCredential credential = new GoogleCredential.Builder()

  .setTransport(HTTP_TRANSPORT)
  .setJsonFactory(JSON_FACTORY)
  .setServiceAccountId("xxxxx@developer.gserviceaccount.com")   

  .setServiceAccountUser("USER_EMAIL_ADRESS")
  .setServiceAccountScopes(CalendarScopes.CALENDAR)
  .setServiceAccountPrivateKeyFromP12File(licenseFile)
  .build();

  client = new com.google.api.services.calendar.Calendar.Builder(
                        HTTP_TRANSPORT, JSON_FACTORY, credential)
                        .setApplicationName( "Google Calendar Sync").build();

此外,这些链接帮助了很多有关设置服务帐户:

OAuth的谷歌API的Java无法模仿用户

谷歌的Apps管理员可以管理与硬碟SDK用户的文件?



文章来源: authorize google calendar api works on personal account but not on google domain account