Как получить токен доступа Google oAuth2.0 с помощью команды curl? - PullRequest
0 голосов
/ 26 марта 2019

Я экспериментировал с REST API Google.Здесь я пытался сгенерировать токен доступа из команды cURL, чтобы использовать его в дальнейшем запросе REST.Но я столкнулся с приведенными ниже ошибками.

Я пытался получить токен доступа по приведенной ниже команде cURL, но я получаю ниже сообщения об ошибках.

curl \
--request POST \
--data "code=4/GQEg70zaxHAuRhhd6A1RB_6LIxwwBV8ak5xRP-nZIBTjuvt4g3fTWyU&client_id=954040553015-bphgid2596t65i91827omteq778cp7gj.apps.googleusercontent.com&client_secret=Sn3giYFFPMCNteKC--938xsP&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" \
https://accounts.google.com/o/oauth2/token

Ответ:

{
"error": "invalid_grant",
"error_description": "Bad Request"
}

Затем я отредактировал команду, как показано ниже, но она не работает.

curl -d client_id=954040553015-bphgid2596t65i91827omteq778cp7gj.apps.googleusercontent.com -d client_secret=Sn3giYFFPMCNteKC--938xsP -d grant_type=authorization_code -d redirect_uri=urn:ietf:wg:oauth:2.0:oob -d code=4/GQEg70zaxHAuRhhd6A1RB_6LIxwwBV8ak5xRP-nZIBTjuvt4g3fTWyU https://oauth2.googleapis.com/token

Ответ:

{
  "error": "invalid_grant",
  "error_description": "Bad Request"
}

Итак, основываясь на этой ссылке https://gist.github.com/LindaLawton/cff75182aac5fa42930a09f58b63a309#file-googleauthenticationcurl-sh У меня естьизменил grant_type = client_credentials.Но снова я получил ответ об ошибке.

{
"error": "unsupported_grant_type",
"error_description": "Invalid grant_type: client_credentials"
}

Итак, пожалуйста, помогите мне устранить ошибку.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Итак, ответ был в вопросе. "Invalid grant_type: client_credentials", тогда как тип гранта должен быть authorization_code

Мой совет для вас - пойти на игровую площадку OAuth и сравнить то, что она отправляет, с тем, что вы отправляете. Вот паста с детской площадки ...

POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-length: 277
content-type: application/x-www-form-urlencoded
user-agent: google-oauth-playground
code=4%2FGgFtOcUM73dTMJNpE7XR7w082MrYH-LCm7zMylg31ESKrwmpyQXnzOM
 &redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground
 &client_id=407408718192.apps.googleusercontent.com
 &client_secret=************
 &scope=
 &grant_type=authorization_code
0 голосов
/ 27 марта 2019

не используйте urn:ietf:wg:oauth:2.0:oob

, не используйте https://developers.google.com/oauthplayground

, но используйте http://localhost ...

или любой веб-сервер, который переписываетpost-back к локальному имени хоста.

, если не обрабатывать этот post-back, запрос cURL сам по себе бесполезен.

, хотя этот вопрос даже не раскрывается, если он находится в режиме онлайнили за NAT.

для потока от сервера к серверу oAuth2, вам нужен сетевой хост и учетные данные для учетной записи службы.

...