Alexa Skill Activation API中的redirect_uri是什么?

问题描述 投票:1回答:1

背景

[我正在实现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"}

Notes

  • 我的应用使用Firebase身份验证,并通过与Google和Facebook的联合登录为用户创建帐户。因此,Google和Facebook重定向回我的本机应用程序(React Native)。
  • 我没有通用链接;而是在我的帐户关联流程中,Alexa应用程序将用户重定向到html页面,该页面使用其自定义架构重定向到我的应用程序。
  • [当用户从Alexa登录到我的应用程序时,Alexa会将他们从我的登录页面重定向回Alexa应用程序。在这种情况下,Alexa通用链接是重定向URL。
  • [当用户从我的应用程序登录Alexa(应用程序至应用程序链接)时,Alexa应用程序会将其重定向到我的应用程序。我的应用是重定向网址。

我已经尝试将应用程序的[faux]“通用链接”用作重定向网址,但无济于事。我的登录流程中没有其他重定向。这个网址应该是什么?

注意:我有一个端点,用于将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);
    }
}
oauth-2.0 alexa alexa-account-linking
1个回答
0
投票

我认为无法同时使用Google和Facebook等其他OAuth服务器。我不确定是否可以将firebase用作OAuth服务器。

在该技能的帐户链接选项卡中,您必须输入要使用的OAuth服务器的详细信息,在accountLinkRequest中,您必须输入用于进行OAuth登录的redirectUri此服务器。

© www.soinside.com 2019 - 2024. All rights reserved.