服务帐户从Calendar API获取错误

时间:2015-10-26 11:10:06

标签: java google-calendar-api service-accounts

我有两个服务帐户来执行Calendar API请求。 两者都是以相同的方式生成的,但它们之间的差异很小 第一个服务帐户的电子邮件地址以" @ developer.gserviceaccount.com"它的工作原理 第二个服务帐户的电子邮件地址以" @ project-id.iam.gserviceaccount.com"结束。在对Calendar API执行请求后,我收到错误:

{
  "code" : 400,
  "errors" : [ {
    "domain" : "usageLimits",
    "message" : "Bad Request",
    "reason" : "keyInvalid"
  } ],
  "message" : "Bad Request"
}

代码示例:

HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();   

 GoogleCredential credential = new GoogleCredential.Builder()
                        .setTransport(httpTransport)
                        .setJsonFactory(jsonFactory)
                        .setServiceAccountId(service_account_email)
                        .setServiceAccountScopes(Arrays.asList("https://www.googleapis.com/auth/calendar"))
                        .setServiceAccountUser(user_email)
                        .setServiceAccountPrivateKeyFromP12File(
                            new java.io.File("key.p12")).build();

    Calendar service = new Calendar.Builder(httpTransport, jsonFactory,
            credential).setApplicationName("MyApp")
            .build();

    service.events().list("primary").execute();

任何想法可能是什么原因?

修改
当我尝试使用Directory API时,也会出现此问题。

1 个答案:

答案 0 :(得分:0)

这似乎是新服务帐户和Google API的临时问题。 现在所有服务帐户都有效。