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.

Другие вопросы по тегам