Я пишу навык SmartHome и мне нужен токен доступа для публикации асинхронных уведомлений для устройства (дверной звонок). Документация сбивает с толку, но из того, что я предположил, я должен получить свои client_id и client_secret из консоли Alexa и получить токен носителя во время первоначального подключения / авторизации навыка, а затем запросить токен доступа (и refre sh токен) через 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
действительны, потому что, когда я меняю их на что-то намеренно ошибочное , Я получаю ожидаемую ошибку).
Есть идеи, что я делаю не так ??