Zig*_*rth 16 amazon userid amazon-web-services alexa-skill alexa-skills-kit
在亚马逊alexa技能请求中有一个userId,我试图了解这是什么,如果有一些参考,因为我想链接和Amazon Echo用户帐户与我自己的应用程序中的帐户,并这样做我必须有某种静态userId才能使用.
示例请求:
{
"version": "1.0",
"session": {
"new": false,
"application": {
"applicationId": "amzn1.echo-sdk-ams.app.[unique-value-here]"
},
"sessionId": "session1234",
"attributes": {},
"user": {
"userId": null //IS THERE A DETAILED REFERENCE OF THIS SOMEWHERE?
}
},
"request": {
"type": "IntentRequest",
"requestId": "request5678",
"intent": {
"name": "MyColorIsIntent",
"slots": {
"Color": {
"name": "Color",
"value": "blue"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jus*_*gel 27
好问题.
简短回答:您将不得不在第三方用户和Alexa UserID之间建立自己的配对.Alexa Skills SDK中没有内置支持,可让您将Alexa UserID与您的用户ID相关联.您将不得不创建一个特定的语音意图,将Alexa UserID与您的用户数据库相关联.
更长的答案:让我们首先谈谈您在每个请求中获得的Alexa UserID.您获得的Alexa UserID是LWA(Login-With-Amozon)用户ID.允许Alexa Skills可靠地检测重复用户的主要目的.
什么不起作用?您将要遇到的问题是LWA userId始终是匿名的每个Alexa应用程序.这很重要,因为它确保用户不被跟踪; 但它也会阻止您将Alexa userID与您自己的LWA用户ID相关联.
从" 使用Amazon登录 - 开发人员指南 "(第10页)
每个为亚马逊登录创建网站或应用程序的公司都会为客户获得相同的user_id.但是,当客户登录到其他公司的应用程序或站点时,user_id将不同.这样,user_id不能用于跟踪Web上的客户.
我想说的是,你不能只在iOS,Android或Web应用程序中实现LWA,并希望获得一个帐户的LWA userId,就像你获得的Alexa用户ID一样.例如,如果您在Android应用上实施了LWA,并且让foo@bar.com用户登录其亚马逊帐户,您可能会将amzn1.account.123456作为用户ID,但当相同的foo@bar.com用户与他们的配对进行对话时回声你会得到一个amzn1.account.98765或任何其他完全不同的userId.我实际上浪费了两天来构建这个架构,这就是我知道它不起作用的方式.
那有什么用呢?Pin身份验证的以语音为中心的变体似乎是最好的.
让我们看一下具有类似问题的应用程序的另一个空间:电视应用程序(xbox,Android TV等).很多这些应用程序都要求您登录才能访问内容(例如hulu,netflix等).但是使用遥控器输入用户名和密码只是普通的旧用户体验.那么我们为电视应用做了什么?用户访问myService.com/tv,登录他们的帐户并获得一个特殊的简短,数字和时间敏感的密码,他们可以输入到他们的电视.
当我实施Alexa Skill时,我们决定采用类似的方法.用户将登录我们的网站,iOS应用程序或Android应用程序,转到专用的Echo页面,然后获取密码.屏幕上的说明如下:
转到你的Echo并说:
'启动foo'
'我的针是一两三四'
在我们的foo技能中,我们有一个PairingIntent意图听" 我的pin是{one two three four | pinCode} "样本话语.收到PairingIntent后,我们会检查该PIN码是否有效,以及如果将Alexa userID与我们自己的用户DB相关联.如果引脚是有效的,Echo会说" 哦,你好吧!你现在可以访问所有令人敬畏的东西. " 如果密码无效,alexa会提示用户再试一次.
希望这是有道理的.还有其他选项可以将第三方帐户与Alexa Skills相关联,但这种语音引脚方法最简单.
Luc*_*cas 11
我不知道为什么原始答案已被删除,但亚马逊现在允许您将Alexa用户与系统中的用户链接.这是宣布.
最终用户如何为技能设置帐户链接
用户使用Amazon Alexa应用程序链接其帐户.请注意,用户必须使用该应用.不支持仅通过语音建立链接.
用户通常在最初在应用中启用您的技能时启动该过程:
- 在Alexa应用程序中,用户启用该技能.
该应用程序使用您在开发人员门户网站上注册技能时提供的授权URL,在应用程序中显示您的登录页面.当伴随应用程序调用此URL时,它包括 state,client_id和scope作为查询字符串参数.
- 在帐户链接过程中,Alexa服务使用该状态.您的页面需要跟踪此值,因为您必须
稍后将其传回.- client_id由您定义.您的登录页面可以使用它来确定请求来自您的Alexa技能.
- 范围是访问范围的可选列表,指示所请求的访问级别.您可以在为您的技能启用帐户关联时定义要支持的范围集.
用户使用他们站点的正常凭据登录.
您的服务对用户进行身份验证,然后生成唯一标识系统中用户的访问令牌.
您的服务将用户重定向到特定于Amazon的URL,并传递URL片段中的state,access_token和token_type.
Alexa服务验证返回的信息,然后为Alexa用户保存access_token.
此时,技能已启用,用户的Alexa帐户已链接到您服务中的帐户,并且该技能已准备好使用.
归档时间: |
|
查看次数: |
10802 次 |
最近记录: |