获取Google Admin SDK中的用户列表

时间:2013-11-05 21:17:21

标签: oauth google-admin-sdk

我在我的应用中登录了OAuth。之后我有access_token。

我在Google令牌信息服务中检查令牌:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=<access_token>

它返回:

{
"issued_to": "554651647288-tquejcu6mctplq4kin5dd9r81mtkg3vv.apps.googleusercontent.com",
"audience": "554651647288-tquejcu6mctplq4kin5dd9r81mtkg3vv.apps.googleusercontent.com",
"scope": "https://www.googleapis.com/auth/admin.directory.group  https://www.googleapis.com/auth/admin.directory.orgunit https://www.googleapis.com/auth/admin.directory.user",
"expires_in": 3299,
"access_type": "online"
}

如您所见,我拥有管理员用户目录权限。

然后我发送GET请求以获取有关用户的信息

curl -X GET https://www.googleapis.com/admin/directory/v1/users/test_user@test.com?access_token=<access_token>

谷歌回复了我正确的用户信息。之后我决定获得用户名单。

curl -X GET https://www.googleapis.com/admin/directory/v1/users?customer=my_customer&access_token=<access_token>

谷歌回复了我:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

但我不明白为什么谷歌给我这么错误。

你能帮我解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这里有两种解决方案。

1.这很简单。将URL参数放在引号中。这应该可以解决 - (使用假访问令牌)

curl "https://www.googleapis.com/admin/directory/v1/users?customer=my_customer&access_token=asdf.AHEasdfyIc9vuPQ_BGONpzEJkasdfWYXGujPw5iPI"

您无需传递-X GET,因为这是默认设置。

2.一般来说,在URL中发送access_token是不好的做法,因为这个URL可能会因为无害的原因而被记录在某个地方。您也可以通过HTTP Header of Authorization -

来完成此操作

curl -H "Authorization: Bearer asdf.AHEasdfyIc9vuPQ_BGONpzEJkasdfWYXGujPw5iPI" https://www.googleapis.com/admin/directory/v1/users?customer=my_customer