问题描述
我正在创建带有帐户关联的 Alexa 技能。我得到了链接授权码并用它交换了一个访问令牌。然后,我尝试将所有参数:代码、访问令牌、技能 ID,放入 Alexa 技能激活 API。我总是收到一条消息:“无效的帐户链接凭据”。
var clientServerOptions = {
uri: `https://api.amazonalexa.com/v1/users/~current/skills/${SkillId}/enablement`,body: JSON.stringify({
stage: "development",accountLinkRequest: {
redirectUri: "https://api.amazon.com/auth/o2/token",authCode: req.body.code,//the code I got from the start
type: "AUTH_CODE"
}
}),method: 'POST',headers: {
'Content-Type': 'application/json','Authorization': `Bearer ${req.body.access_token}` //my access token
}
}
request(clientServerOptions,function (error,response) {
if(error != null) {
console.error(error);
} else {
console.log(response.body);
}
return;
});
怎么办?
解决方法
在启用应用程序链接(从您的应用程序开始)的过程中,我犯了一些错误。请检查您是否可能正在制作其中任何一个。
错误 -
-
创建新的 LWA(使用亚马逊登录)配置文件。
您不需要新的 LWA 配置文件,而应使用技能页面上权限选项卡下的 Alexa 凭据。它们具有应用-应用链接所需的正确范围 (alexa::skills:account_linking
),而 LWA 配置文件不能具有此范围。 -
使用实时技能的开发版本。
我修改了开发版本中的帐户链接部分以指向测试部署。虽然在开发者控制台中允许这些更改,但每次绑定帐户都失败,所以我创建了一个新技能。 -
重用 Alexa 身份验证代码。
我没有意识到即使是一个错误的请求也会使 Alexa Auth 代码无效。 -
登录了错误的 Alexa 帐户。
在测试帐户链接期间进入 LWA 屏幕时,仅使用创建技能的开发人员凭据登录。这是因为此时该技能仅适用于 Alexa 开发人员帐户,其他任何人都无法使用。 (甚至不是 Beta 测试人员)