Adwords API,OAuth2和Java中的服务帐户

时间:2013-04-10 09:30:51

标签: java google-adwords

我已切换到OAuth2身份验证以访问Adwords API。我想使用服务帐户,因为我们的应用程序没有用户交互。因此,我在Google API控制台中为mcc帐户创建了一个服务帐户。用过:

GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(new JacksonFactory())
.setServiceAccountId("..@developer.gserviceaccount.com")
.setServiceAccountScopes("https://adwords.google.com/api/adwords/")
.setServiceAccountPrivateKeyFromP12File(file)
.setServiceAccountUser("<MCC Account Email")
.build();

创建凭据。

当我现在尝试拨打API电话或只是致电credential.refreshToken()时,我得到:

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
  "error" : "access_denied"
}
at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:303)
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:323)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:345)
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:526)

...

谁能告诉我,我做错了什么或我错过了什么?

1 个答案:

答案 0 :(得分:0)

不能说你发布的部分代码,我在我的应用程序中使用完全相同的方式,一切正常。

我的jar版本是:

 google-api-services-oauth2-v2-rev9-1.7.2-beta.jar
 google-http-client-1.12.0-beta.jar
 google-oauth-client-1.12.0-beta.jar

如果您没有想法,请尝试更改oauth2库的版本。