3

我正在尝试获取 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 来“获取”Google Apps 用户时,我得到了 403 - Forbidden 响应代码。有人可以帮忙吗?
我知道 GET 用户的代码是正确的,因为它适用于 Google Apps 管理员生成的访问令牌。

4

3 回答 3

5

您需要设置一个管理员帐户:

.setServiceAccountUser(some_admin_email)

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

于 2013-12-04T10:52:55.673 回答
4

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

于 2014-01-30T10:51:14.297 回答
0

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

于 2020-04-24T02:02:26.933 回答