我在我的应用中登录了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"
}
}
但我不明白为什么谷歌给我这么错误。
你能帮我解决这个问题吗?
感谢。
答案 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