Я пишу навык SmartHome, и мне нужен токен доступа для публикации асинхронных уведомлений для устройства (дверной звонок). Документация сбивает с толку, но из того, что я сделал вывод, я должен получить свой client_id и client_secret из консоли Alexa и получить токен носителя во время начального подключения/авторизации навыка, а затем запросить токен доступа (и токен обновления) через OAuth. Итак, я могу получить эти три части информации, но затем я пытаюсь сделать следующее:
curl -vv X POST -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' -d "\
grant_type=authorization_code\
&code=$CODE\
&client_id=$CLIENT_ID\
&client_secret=$CLIENT_SECRET" \
https://api.amazon.com/auth/o2/token
Где CODE пришел из первоначального запроса авторизации как:
"payload": {
"grant": {
"code": "<<REDACTED>>",
"type": "OAuth2.AuthorizationCode"
},
Но это всегда дает мне:
{"error_description":"The request has an invalid parameter : code","error":"invalid_grant"}
Если я удалю параметр code
, он жалуется, что он отсутствует, и если я изменю код на недопустимый, ошибка изменится с invalid_grant
на invalid_request
. Так что код понимает, но что-то не нравится во всем этом потоке.
(Я знаю, что client_id
, client_secret
и grant_types
допустимы, потому что когда я меняю их на что-то намеренно ошибочное, я получаю ожидаемую ошибку).
Любая идея, что я делаю неправильно ??