Может ли Alexa заменить созданный UserId для связанного пользователя?
У нас есть приложение, использующее навык Alexa с привязкой аккаунта для получения информации о пользователе.
Согласно документации по связыванию аккаунта Алексы:
https://stackru.com/images/06a15929ce00481bccc51b9671aafbc8a 35e3c5e.png
Наш навык настроен на связывание учетных записей, которое, в свою очередь, относится к третьей стороне (или она может быть внутренней) системы управления идентификацией (IMS) для аутентификации пользователя. Наше приложение (а также наша организация) НЕ поддерживает внутреннюю идентификацию пользователя приложения.
Допустим, пользователь включил наш навык на своем устройстве, и в этот момент (согласно вышеупомянутым документам) ему был выдан сгенерированный Alexa userId
, что-то вроде:
"userId": "amzn1.ask.account.AFMWOL5WIGQZLYYEMM2IJL2BJ26ICPQHBPR2DSLRX46CHW36R6CPVH7RZTUZMBCHHJLQQNU3YO2BWZWNIRTM3PCAGTNZKILK33PM2XVI36H4RSINFH2A26OLURAIB2RVPV6GMK56BR5BLBIFNJKT64EANASM7IDTQJBQLGDIEUZHUIM6VSHTTOUPVPITIPOIOPESUK53TSALU5I"
Следовательно, при дальнейшем взаимодействии с навыком она хотела получить доступ к некоторой более персонализированной информации, которая инициировала связывание аккаунта, поэтому ее личность была подтверждена и восстановлена с помощью предоставленных реквизитов связывания аккаунта (профиль кода авторизации OAuth 2), которые, при этом, как упомянутое ранее связывалось со Сторонней системой управления идентификацией (не LWA) для проверки личности пользователя:
- пользователю предоставляется экран входа в систему,
- она вводит свои полномочия, говорят:
"alice"/"password123"
- она отвечает на соответствующие вопросы, чтобы разрешить определенные действия, которые наше приложение может выполнять от ее имени и
- разрешено дальнейшее взаимодействие с системой на более персонализированной основе
Допустим, внутри нашего приложения мы хотим, чтобы пользователь мог идентифицировать пользователя по его реальному идентификатору пользователя: alice
а НЕ тот, который автоматически назначается Amazon, как описано выше.
- Алекса позволяет это?
- После успешной привязки учетной записи Alexa перезаписывает в своем запросе JSON (или может ли он каким-то образом пройти через него, наряду с теперь встроенным
accessToken
поле) userId, который он получает от стороннего поставщика удостоверений), чтобы этот "реальный" userId (на языке OAuth он назывался subjectId?) мог затем использоваться для идентификации действий пользователя во время ее дальнейших взаимодействий с приложением?
Если да, как мы можем получить информацию о пользователе из JSON через Alexa Java API?
Если нет, то какие будут возможные способы облегчить такую способность?
Может ли реальный userId быть получен из
accessToken
что Alexa вставляет в свой запрос после аутентификации пользователя? Если так, то как?Я не уверен, если это связано с этим, похоже, похожий запрос, был ли он включен в дорожную карту Алекса или уже стал функцией?
1 ответ
Похоже, это подробная версия Как получить userId, указанный пользователем Alexa при привязке аккаунта
Вообще говоря, после того, как пользователь завершит аутентификацию OAuth, приложение (т.е. в данном случае Alexa) получит access_token
а также refresh_token
, Если вам нужны какие-либо дополнительные данные, например, имя пользователя alice
электронной почтой, телефоном, адресом и т. д., вам нужно будет проконсультироваться с вашим провайдером OAuth и узнать, есть ли у них API для извлечения данных на основе access_token
с соответствующей областью применения.