Java中的AdWords API,OAuth2和服务帐户
问题描述:
我已切换到OAuth2认证以访问Adwords API。我想使用服务帐户,因为我们的应用程序没有用户交互。因此,我在Google API控制台中为mcc帐户创建了一个服务帐户。并使用:Java中的AdWords API,OAuth2和服务帐户
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(new JacksonFactory())
.setServiceAccountId("[email protected]")
.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)
..
谁能告诉我,我做错了还是什么我已经错过了做?
答
无法从您发布的代码中说出,我在我的应用中使用完全相同的方式,并且一切正常。
我的罐子版本:
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库版本。
您使用哪个adwords Api?我使用: com.google.api的广告 广告-lib的 1.14.1 com.google.api的广告 的AdWords轴 1.14。 1 com.google.http-client 谷歌-HTTP-客户jackson2 1.14.1-β –
user2265366
2013-04-10 11:53:28
我没有使用AdWords API。尝试加载其他一些信息,例如用户联系人或谷歌驱动器文档,以检查它是否针对所有API特定的AdWords问题或认证问题。 – 2013-04-10 12:43:46