获得403 - 禁止使用Google服务帐户

时间:2013-12-04 10:12:10

标签: google-api google-apps google-oauth google-api-java-client google-oauth-java-client

我正在尝试获取Google服务帐户的访问令牌。以下是我的代码 -

String SERVICE_ACCOUNT_EMAIL = "edited@developer.gserviceaccount.com";
List scope = new ArrayList();
scope.add("https://www.googleapis.com/auth/admin.directory.user");
String keyFile = "C:\\edited-privatekey.p12";
HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(scope)
.setServiceAccountPrivateKeyFromP12File(new java.io.File(keyFile))
.build();

credential.refreshToken();
String accessTokens = credential.getAccessToken();

虽然代码工作正常但我确实获得了访问令牌,但当我尝试使用Google Directory API“GET”Google Apps用户时,我会收到403 - 禁止响应代码。有人可以帮忙吗? 我知道GET用户的代码是正确的,因为它适用于Google Apps管理员生成的访问令牌。

3 个答案:

答案 0 :(得分:5)

您需要设置管理员帐户:

.setServiceAccountUser(some_admin_email)

并确保您的应用程序(具有正确的范围)被授予cpanel中的访问权限。

答案 1 :(得分:4)

继续https://admin.google.com。如果不存在更多控件,则登录并添加安全控制。 单击Security->Advance Settings->Manage ThirdParty OAuth Client Access并检查是否为xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com服务帐户ID /客户端ID添加了这些范围(以逗号分隔)。

答案 2 :(得分:0)

https://console.developers.google.com/库中使用特定的api之前,必须启用该特定的api,才能使其与您的api密钥一起使用。 观看视频https://www.youtube.com/watch?v=s_G5CnAu69M