我需要创建一个Java应用程序,在Google Domain中的员工中存储日历事件。 我根据http://code.google.com/p/google-api-java-client/wiki/APIs#Calendar_API
上的示例创建了应用程序现在我想让它在google域名的帐户上工作,然后我突然陷入困境。 我用一个新文件更改了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” }
我需要为此做其他步骤吗?此外,它需要在域内默认使用所有帐户而不是单个帐户。也许其他控制台?我希望不是其他图书馆。
答案 0 :(得分:2)
要访问域中的所有帐户,您需要使用服务帐户:
https://developers.google.com/accounts/docs/OAuth2ServiceAccount
虽然此链接特定于Drive API,但它应该为您提供一些易于适应Calendar API v3的代码示例:
答案 1 :(得分:2)
为了将来参考,我使用以下代码来授权Google日历
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();
此外,这些链接对设置服务帐户有很大帮助: