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