好问题。
简答:您将不得不在您的第 3 方用户和 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 用户 ID 与您自己的 LWA 用户 ID 相关联。
来自“Login with Amazon - Developer Guide”(第 10 页)
每家为 Login with Amazon 创建网站或应用程序的公司都会获得
客户的相同 user_id。但是,当客户登录到
其他公司的应用或网站,user_id 会有所不同。这是
因此 user_id 不能用于在网络上跟踪客户。
我想说的是,您不能只在 iOS、Android 或 Web 应用程序中实现 LWA,并期望为帐户获得与 Alexa 用户 ID 相同的 LWA 用户 ID。例如,如果您 implemented LWA on your Android app 有 foo@bar.com 用户登录到他们的亚马逊帐户,您可能会获得 amzn1.account.123456 作为用户 ID,但是当那同一个 foo@bar.com 用户与他们配对的 Echo 对话,您将获得一个 amzn1.account.98765 或任何其他完全不同的 userId。我实际上浪费了两天时间来构建这个架构,这就是我知道它不起作用的原因。
那么什么是有效的?以语音为中心的 Pin 身份验证变体似乎是最好的。
让我们看看另一个存在类似问题的应用空间:电视应用(xbox、android TV 等)。许多这些应用程序需要您登录才能访问内容(例如 hulu、netflix 等)。但是使用遥控器输入用户名和密码只是普通的旧用户体验。那么我们为电视应用做了什么?用户访问 myService.com/tv,登录到他们的帐户并获得一个特殊的短、数字和时间敏感的 pin 码,他们可以将其输入到他们的电视。
当我实施 Alexa Skill 时,我们决定采用类似的方法。用户将登录我们的网站、iOS 应用程序或 Android 应用程序,进入专门的 Echo 页面,然后获取密码。屏幕上的说明会这样写:
转到您的 Echo 并说:
'启动 foo'
'我的密码是一二三四'
在我们的 foo 技能中,我们有一个 PairingIntent 意图听“我的 pin 是 {一二三四|pinCode}”示例话语.收到 PairingIntent 后,我们将检查该 pin 码是否有效,以及是否将 Alexa 用户 ID 与我们自己的用户数据库相关联。如果 pin 是有效的,Echo 会说“哦,你好,鲍勃!你现在可以访问所有很棒的东西了。”。如果密码无效,alexa 会提示用户重试。
希望这是有道理的。还有其他选项可以将 3rd 方帐户与 Alexa Skills 相关联,但这种语音锁定方法是最简单的。