如何使用亚马逊的 Alexa API 为技能设置帐户链接?

Posted

技术标签:

【中文标题】如何使用亚马逊的 Alexa API 为技能设置帐户链接?【英文标题】:How to Set Up Account Linking for a Skill using Alexa API from Amazon? 【发布时间】:2017-04-08 11:29:46 【问题描述】:

我正在尝试弄清楚如何将技能与自定义用户帐户相关联。这是文档中的内容:

隐式授权的帐户链接流程(用于自定义技能):

    在 Alexa 应用程序中,用户启用该技能。

    该应用会显示您的 应用内的登录页面,使用您的授权 URL 在开发者门户上注册技能时提供。什么时候 配套应用调用此 URL,它包括 stateclient_idresponse_typescope 作为查询字符串参数。

    Alexa 服务在帐户关联过程中使用该状态。您的页面需要跟踪此值,因为您必须稍后将其传回。 state 由 Alexa 服务在帐户期间使用 client_id 是您在开发者门户中为技能设置帐户链接时定义的值。 对于隐式授权流,response_type 始终为 tokenscope 是访问范围的可选列表,指示请求的访问级别。在为您的技能启用帐户链接时,您定义要支持的范围集。 redirect_uri 是用户通过身份验证后服务将用户重定向到的 URL。

    用户使用他们的正常凭据登录您的站点。

    您的服务对用户进行身份验证,然后生成一个访问令牌,用于在您的系统中唯一标识该用户。 您的服务将用户重定向到指定的redirect_uri,并在URL 片段中传递stateaccess_tokentoken_type。 Alexa 服务验证返回的信息,然后为 Alexa 用户保存 access_token。 用户的 Alexa 帐户现已链接到您服务中的帐户,并且可以使用该技能。

这是我从亚马逊得到的:


"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

有什么想法吗?

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,我不得不在令牌之前使用哈希而不是 & 符号。我的重定向网址是:

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

【讨论】:

token 可以是你想要的任何东西,当用户进行语音交互时,它会由 Alexa 传回给你。 OAuth 令牌可能是一种安全、标准的方式。

以上是关于如何使用亚马逊的 Alexa API 为技能设置帐户链接?的主要内容,如果未能解决你的问题,请参考以下文章

alexa 在技能调用时发送 SessionEndedRequest

Alexa没有找到我的技能

如何在 Alexa Skill 中使用 Java 获取亚马逊用户电子邮件

亚马逊 Alexa 意图技能控制台

亚马逊推Alexa技能开发工具:使用者无需编程能力

亚马逊 Alexa 技能