连接谷歌日历服务java
我想使用谷歌日历API在java中创建应用程序,但我尝试连接到API服务,但它是错误的。 这里是我的代码(与Eclipse)连接谷歌日历服务java
GoogleCredential credential = new GoogleCredential.Builder().setTransport(GoogleNetHttpTransport.newTrustedTransport())
.setServiceAccountId("*****************")
// .setServiceAccountUser("my e-mail adress")
.setClientSecrets("","********")
// .setServiceAccountScopes(CalendarScopes.CALENDAR)
.setJsonFactory(new GsonFactory())
.build();
Calendar client = new com.google.api.services.calendar.Calendar.Builder(
GoogleNetHttpTransport.newTrustedTransport(), new GsonFactory(), credential).build();
的错误是:
Exception in thread "main" java.lang.IllegalArgumentException
at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:111)
at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:37)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.<init>(GoogleCredential.java:323)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder.build(GoogleCredential.java:539)
at google_calendar.add_evenement.main(add_evenement.java:21)
如果您还没有这样做,检查Using OAuth 2.0 for Server to Server Applications。
正如所讨论的,如果你已经委派域范围内的访问服务帐户,你要模拟用户帐户,该帐户GoogleCredential
工厂setServiceAccountUser
方法指定的用户帐户的电子邮件地址。例如:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12"))
.setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
.setServiceAccountUser("[email protected]")
.build();
然后,calling Google APIs使用Java:
使用
GoogleCredential
对象通过完成以下步骤来调用谷歌的API:
- 创建的API服务对象你想使用
GoogleCredential
对象进行呼叫。例如:
SQLAdmin sqladmin =
new SQLAdmin.Builder(httpTransport, JSON_FACTORY, credential).build();
开始=>
- 请使用interface provided by the service object请求到API服务。例如,要列出云SQL数据库的实例在兴奋的 - 例如-123项目:
SQLAdmin.Instances.List instances =
sqladmin.instances().list("exciting-example-123").execute();
感谢您的帮助, 我用你的说明和错误是: 异常在线程“main”com.google.api.client.auth.oauth2.TokenResponseException:401 Unauthorized .... –
您可能想要检查您使用的访问令牌是已过期还是无效。请参阅建议的操作[此处](https://developers.google.com/google-apps/calendar/v3/errors#401_invalid_credentials)。 – Teyam
我试过解决方案,但同样的错误 –
根据你的错误信息没有与验证的问题,你能提供的输出与改变认证?您可以使用:GoogleCredential凭证= new GoogleCredential.Builder()。setTransport(GoogleNetHttpTransport.newTrustedTransport())。setServiceAccountId(“*****************”)。setClientSecrets (“”,“********”)。setJsonFactory(new GsonFactory())。setAccessType(“offline”)。build();' –
谢谢,但我有同样的错误 –
这似乎很奇怪对我来说,你正在设置一个服务帐户ID和一个客户端机密 - 通常你*要么*使用服务帐户的详细信息*或*你使用客户端ID /秘密。同样,您设置服务帐户标识很奇怪,但在服务帐户机密方面没有别的。 –