通过遵循亚马逊的 Alexa 文档,我很难让它发挥作用。我在 Account Linking 上搁浅了,因为我不知道如何让 Login with Amazon (LWA) 请求 alexa::skills:account_linking 范围。
我已将 Amazon API 库包含在我的应用程序中并正确设置,我正在使用(全球可用的)amazon 对象调用该过程,如下所示(打字稿):
const options: any = {};
options.scope = ['profile', 'alexa::skills:account_linking'];
options.scope_data = {
profile : {essential: false}
};
options.response_type = 'code';
const self = this;
amazon.Login.authorize(options, (response) => {
if (!response || !response.code) {
throw { error: response };
}
// ... send the response code to my server
// ... to be exchanged for bearer and refresh tokens
});
我期望从中发生的是一个弹出的亚马逊登录过程,它(1)让用户登录到亚马逊,(2)收集用户同意将他们的亚马逊账户链接到我的 Alexa 技能(即链接到我的凭证托管服务),以便我们(在浏览器中)返回一个授权代码,我们可以(在我们的服务器上)交换承载和刷新令牌以代表用户行事。
问题是,上面的代码立即失败并且永远不会弹出一个进程。抛出的消息说:“请求了一个未知的范围”。如果我从 options.scope 数组中删除 'alexa::skills:account_linking' 字符串,我会进入亚马逊登录屏幕,如果我登录亚马逊,我的服务器会获得授权码等。但没有帐户链接已经发生了,所以我被卡住了。
我试图将这个文档(它也谈到以某种方式包含技能 ID)与这个文档相协调,但我只是不知道如何使它工作。谁能帮我指出我在这里做错了什么的正确方向?它一定是非常基本的东西。