googleapis возвращает неверный запрос
Реализовав oauth2.0 и выполнив рукопожатие с помощью областей действия:
"https://www.googleapis.com/auth/userinfo.email ",
"https://www.googleapis.com/auth/userinfo.profile",
"https://www.googleapis.com/auth/admin.directory.user ",
"https://www.googleapis.com/auth/admin.directory.group ",
"https://www.googleapis.com/auth/admin.directory.orgunit ",
Я вернул жетон
запрос
$ curl -X GET https://www.googleapis.com/oauth2/v1/userinfo?access_token=<Token>
{
"id": "{id}",
"email": "{email}",
"verified_email": true,
"name": "{name}",
...
}
как это должно.
однако запрос к пространству имен admin.directory.user не удается:
$ curl -X GET https://www.googleapis.com/admin/directory/v1/users?access_token=<Token>
{
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
Есть хорошие идеи, почему это так?
Запрос к admin.directory.users составлен из https://developers.google.com/admin-sdk/directory/v1/reference/
3 ответа
У меня была такая же проблема с получением всех пользователей черезhttps://www.googleapis.com/auth/admin.directory.user
конечная точка. Согласно документации, вы можете сделать это в определенном домене, передав домен в качестве параметра, или получить всех существующих пользователей, передавcustomer=my_customer
параметр следующим образом:
- Получить всех пользователей в доменном документе :
https://www.googleapis.com/auth/admin.directory.user?domain=example.com
или
- Получить документ о всех пользователях учетной записи :
https://www.googleapis.com/auth/admin.directory.user?customer=my_customer
В oauth2 на игровой площадке google вы также можете протестировать вышеуказанные вещи, выбравAdmin SDK API directory_v1
иauth/admin.directory.user.readonly
для авторизации соответствующей области, затем вызовите вышеуказанные запросы.
Обратите внимание, что вам может потребоваться получить доступ к игровой площадке Google в панели администратора Google в разделе приложений безопасности.
Вам необходимо указать либо домен (чтобы получить поля только из одного домена), либо клиента (чтобы вернуть все домены для учетной записи клиента).
Я подал ошибку, чтобы прояснить, что требуется для предоставления одного из двух параметров.
По крайней мере, вам нужно включить заголовок Content-Type:
curl -X GET -H "Content-Type: application/json" https://www.googleapis.com/admin/directory/v1/users?customer=my_customer&access_token=<Token>
Для полного сценария, который реализует этот API с CURL и BASH, смотрите этот ответ.
Обратите внимание, что в настоящее время документация неверна, поскольку в ней в качестве необязательного параметра указывается customer.