问题看起来很容易回答,但documentation并不是很清楚。我使用OAuth 2.0来授权请求,但最后,只有管理员才能使用API,普通用户会收到错误。我在配置中遗漏了什么,或者只是普通用户不允许使用Directory API?据我所知,它应该是不可能的,但我看到很多原因,为什么它应该是。例如,在我的应用程序中,我希望根据用户的OU处理权限。遗憾的是,我无法找到一种方法,因为每次调用API都必须由经过身份验证的用户授权。但是,如果该用户不是管理员呢?
例如,如果我尝试以普通用户身份执行此API example,则会收到以下错误:
"未授权访问此资源/ api"。
使用管理员帐户,我可以成功检索JSON结果。
答案 0 :(得分:0)
有意义的是,只有域管理员才能使用Directory API(Admin SDK的子集) - 只有域管理员才能访问所有用户数据。
您可以使用服务帐户访问相关域的目录API - 这将为您提供域管理员在允许您的应用时在作用域中授予的完全访问权限。然后,您将在服务器端决定要向“常规”用户公开哪些功能,以及仅向管理员公开哪些功能。
但是,为了做到这一点,您需要找到一种在您的应用中实施服务帐户机制的方法。
答案 1 :(得分:0)
我正在评论另一个答案,因为我认为使用授权在这里是过度的,并且具有安全隐患
只需使用常规服务器流oauth2,不需要2步oauth
在您的应用中创建一个页面,以便域管理员输入并设置应用权限
在那里,创建一个oauth流来捕获该管理员用户的刷新令牌
然后按照oauth docs从该刷新令牌中获取访问令牌
有谷歌课程,为你做所有这些
要快速尝试或跳过oauth流程实现并只是硬编码刷新令牌,请转到https://developers.google.com/oauthplayground/
在那里,添加例如https://www.googleapis.com/auth/admin.directory.user的所需范围
按照直到第2步,它会给你一个刷新令牌
当然,第1步& 2需要从可以访问所需权限的管理员帐户完成。
继续第3步,通过调用你想要的api来证明这确实有效。