1

我正在尝试使用 java Directory API 按照Google 文档中概述的方法返回帐户中所有用户的列表,但是我一直收到 403 权限错误。

使用 Java SDK 我的代码如下所示,执行时 403 失败:

Directory directory = new Directory.Builder(TRANSPORT, JSON_FACTORY, getCredential()).setApplicationName(PRODUCT_FULL_NAME).build();

Directory.Users.List list = directory.users().list();
list.setCustomer("my_customer");
com.google.api.services.admin.directory.model.Users users = list.execute();

在我的 App Engine API 控制台中,我打开了 Admin SDK,并且我设置了权限以请求以下授权范围(在控制台中和以编程方式)。

https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.user.readonly

我没有使用服务帐户,而是授权为“超级管理员”。通过管理控制台,我启用了 API 访问。

使用Google 提供的“试用”表单功能获取列表是可行的。但是,即使我调整我的代码来执行 HTTP 获取而不是使用 java Directory API,我仍然会收到 403 错误。

我带着这个在房子周围转来转去。有谁知道我可能做错了什么?任何指针将不胜感激。

4

1 回答 1

1

啊,我已经犯了凭据缓存!

我一直在扩展一个应用程序以提供这个新功能,并与我之前登录的用户进行测试。我正在使用应用引擎将凭据保存在应用引擎凭据存储中。在方法授权上,我们使用的是旧的缓存凭据,而不是新验证的凭据。

刷新应用引擎内存缓存并从凭据存储中删除凭据解决了该问题。

于 2013-10-08T10:25:59.367 回答