Как настроить привязку учетной записи для навыка с помощью Alexa API от Amazon?

Я пытаюсь понять, как связать навык с настраиваемой учетной записью пользователя. Вот что говорится в документации:

Процесс связывания учетной записи для неявного предоставления (для использования с пользовательскими навыками):

  1. В приложении Alexa пользователь активирует навык.
  2. Приложение отображает вашу страницу входа прямо в приложении, используя URL-адрес авторизации, который вы указываете при регистрации своего навыка на портале для разработчиков. Когда сопутствующее приложение вызывает этот URL-адрес, он включает state, client_id, response_type и scope в качестве параметров строки запроса.

    • The state is used by the Alexa service during the account linking process. Your page needs to keep track of this value, as you must pass it back later.
    • state используется службой Alexa во время учетной записи
    • client_id - это значение, определяемое вами при настройке привязки учетной записи для навыка на портале разработчика.
    • response_type всегда token для неявного потока предоставления.
    • scope - это необязательный список областей доступа, указывающий запрошенный уровень доступа. Вы определяете набор областей для поддержки при включении привязки учетных записей для вашего навыка.
    • redirect_uri - это URL-адрес, на который ваша служба перенаправляет пользователя после аутентификации пользователя.
  3. Пользователь входит в систему, используя свои обычные учетные данные для вашего сайта.

  4. Ваша служба аутентифицирует пользователя, а затем генерирует токен доступа, который однозначно идентифицирует пользователя в вашей системе.
  5. Ваша служба перенаправляет пользователя на указанный redirect_uri и передает state, access_token и token_type во фрагменте URL-адреса.
  6. Служба Alexa проверяет возвращенную информацию, а затем сохраняет access_token для пользователя Alexa.
  7. Учетная запись пользователя Alexa теперь связана с учетной записью в вашем сервисе, и навык готов к использованию.

Вот что я получаю от Amazon:

{
"client_id":"my-client-id",
"response_type":"token",
"state":"some_long_string",
"redirect_uri":"https:\/\/subdomain.amazon.com\/spa\/skill\/account-linking-status.html?vendorId=W5TGH673R
}

Основываясь на том, что я прочитал выше, я перенаправляюсь обратно на:

https://subdomain.amazon.com/spa/skill/account-linking-status.html?vendorId=W5TGH673R&state=same_long_string&access_token=something-I-made-up&token_type=Bearer

К сожалению, это не работает. В основном я получаю: Unable to link your skill

Любые идеи?


person Patrioticcow    schedule 24.11.2016    source источник


Ответы (1)


Я столкнулся с аналогичной проблемой, и мне пришлось использовать хеш вместо амперсанда перед токеном. Мой URL-адрес перенаправления:

https://subdomain.amazon.com/spa/skill/account-linking-status.html?vendorId=W5TGH673R#access_token=something-I-made-up&state=same_long_string&token_type=Bearer
person Jeremy    schedule 24.11.2016
comment
токен может быть чем угодно, он будет передан вам Alexa, когда пользователь выполнит голосовое взаимодействие. Токен OAuth, вероятно, является стандартным безопасным способом сделать это. - person Jeremy; 15.10.2017