背景
我正在实现Alexa的App-to-App Account Linking流程,并且停留在第6步-使用Alexa的Skill Activation API启用该技能。
具体来说,我不确定要为redirect_uri
POST字段提供什么值。在文档中,提供了以下描述:
向您的OAuth 2.0服务器的授权请求中包含的redirect_uri参数,以获取用户的授权代码。这使Amazon可以从您的令牌服务器检索访问令牌。此URL对Amazon必须是不透明的。
我的理解是Alexa希望将现有的授权代码交换为访问令牌,但是我不知道Alexa是如何试图在“幕后”完成此操作的,而我目前的方法会引发400错误。
错误消息
[status] 400
[response] {"message":"Could not contact provider of account linking credentials"}
注释
我尝试将应用程序的[faux]“通用链接”用作重定向网址,但无济于事。我的登录流程中没有其他重定向。这个网址应该是什么?
NB:我有一个端点,用于将auth_code交换为access_token。令牌在正文中返回;没有将access_token附加到redirect_url的重定向。
示例技能激活(我的React Native应用):
async enableSkill() {
try {
let response = await fetch(`https://api.amazonalexa.com/v1/users/~current/skills/${this.skillId}/enablement`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.alexaAccessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
stage: 'development', // or live
accountLinkRequest: {
redirectUri: Linking.makeUrl(), // <--- unsure
authCode: this.myAppAuthCode, // <-- auth code from my system, not Alexa's
type: "AUTH_CODE"
}
})
});
return response.json();
} catch (err) {
throw new Error(err);
}
}
答案 0 :(得分:0)
我认为不可能同时使用Google和Facebook等其他OAuth服务器。我不确定是否可以将firebase用作OAuth服务器。
在该技能的帐户链接标签中,您必须输入要使用的OAuth服务器的详细信息,在 accountLinkRequest 中,您必须输入 redirectUri 您用于此服务器的OAuth登录的
当您拥有自己的OAuth服务器时,请确保它在端口443上运行。我花了数小时才发现它无法与Node.js后端使用的端口3000配合使用。