权限不足:通过管理员登录时,请求在 google 目录 API 中的身份验证范围不足

Asa*_*sad 9 google-admin-sdk reactjs google-directory-api

我正在使用 google 管理目录 API 使用以下 API https://www.googleapis.com/admin/directory/v1/users获取所有帐户公共信息

当我使用g suite域帐户 登录时,这里是此 api链接的链接,假设 abc@somedomain.com 使用非管理用户,此 api 工作正常并获取数组中所有帐户的数据,但是当我通过登录调用此 API 时管理员它给了我以下错误/


权限不足:请求的身份验证范围不足


为什么会发生这种情况我对两个用户使用相同的身份验证和 API 密钥
我的代码在这里

const token =localStorage.getItem('token')
 fetch(`https://www.googleapis.com/admin/directory/v1/users? 
 domain=${domain.url}&viewType=domain_public&key=${apiKey.key}`  
  ,{ headers: {
'authorization': 'Bearer '+token
  },})

  .then(response => response.json())
  .then(data => this.setState({ users:data.users }));
Run Code Online (Sandbox Code Playgroud)

令牌来自此模块npm React google 登录google 登录按钮

ale*_*e13 6

您遇到的问题似乎与您使用访问令牌的方式有关,更确切地说,与您使用与您拥有的管理员帐户相关的范围的方式有关access token

如果两个帐户要使用的范围不完全匹配,则在使用管理员帐户时需要获取另一个访问令牌。

因此,为了解决您的问题,您必须为您将用于管理员帐户的范围获取新的访问令牌。你可以这样声明它们:

const SCOPES = ['https://www.googleapis.com/auth/admin.directory.user.readonly' 'OTHER_SCOPE_1' 'OTHER_SCOPE_2'...];
Run Code Online (Sandbox Code Playgroud)

非管理员帐户也是如此;如果范围不完全匹配,请像上面一样声明它们并获取另一个access token与它们匹配的范围。

参考