我正在尝试使用java Directory API按照Google Documentation中列出的方法返回帐户中所有用户的列表,但我始终会收到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提供的"try it" form功能获取列表。然而,即使我调整我的代码来执行HTTP get而不是使用java Directory API,我仍然会收到403错误。
我带着这个在房子周围走来走去。有谁知道我可能做错了什么?任何指针都会非常感激。
答案 0 :(得分:1)
我已经违反了凭据缓存!
我一直在扩展一个应用程序来提供这个新功能并与我之前登录过的用户进行测试。我正在使用app引擎在应用引擎凭据存储中保留凭据。在方法授权上,我们使用旧的缓存凭据而不是新认证的凭证。
刷新应用引擎内存缓存并从凭据存储中删除凭据解决了这个问题。