我需要存储中的日历事件谷歌域内员工的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”}
我需要为此做其他步骤? 此外,它需要所有账户默认域不是单一帐户内工作的。 也许其它控制台? 我希望不是其他图书馆。
要访问域中的所有帐户,你需要使用一个服务帐户:
https://developers.google.com/accounts/docs/OAuth2ServiceAccount
而这个环节是特定于驱动API,它应该给你一些代码示例,很容易适应日历API第3版:
https://developers.google.com/drive/delegation
以供将来参考我用下面的代码的授权谷歌日历
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