当前位置: 首页 > 知识库问答 >
问题:

Alexa技能激活API中的重定向uri是什么?

高运诚
2023-03-14

背景资料

我正在实现Alexa的应用程序到应用程序的帐户链接流,我被困在第6步-使用Alexa的技能激活API启用技能。

具体来说,我不确定要为redirect_uriPOST字段提供什么值。在文档中,提供了以下描述:

向OAuth 2.0服务器发出的获取用户授权代码的授权请求中包含的redirect_uri参数。这使Amazon能够从令牌服务器检索访问令牌。此URL对Amazon必须是不透明的。

我的理解是Alexa想用现有的授权代码交换访问令牌,但我不知道Alexa是如何“秘密”完成这一任务的,我目前的方法抛出了一个400错误。

错误消息

[status]  400
[response]  {"message":"Could not contact provider of account linking credentials"}

笔记

  • 我的应用程序使用Firebase身份验证,并通过与Google和Facebook的联合登录为用户创建帐户。因此,Google和Facebook重定向回我的原生应用程序(React native)
  • 我没有一个普遍的联系;相反,在我的帐户链接流中,Alexa应用程序将用户重定向到一个html页面,该页面使用自定义模式重定向到我的应用程序
  • 当用户从Alexa登录到我的应用程序时,Alexa会将他们从我的登录页面重定向回Alexa应用程序。在本例中,Alexa universal链接是重定向url
  • 当用户从我的应用程序登录Alexa时(应用程序到应用程序链接),Alexa应用程序会将他们重定向到我的应用程序。我的应用是重定向url

我曾尝试使用我的应用程序的[faux]“universal link”作为重定向url,但没有成功。我的登录流中没有其他重定向。这个url应该是什么?

注意:我有一个endpoint,用于将身份验证代码交换为访问令牌。令牌在主体中返回;没有将访问令牌附加到重定向url的重定向。

技能激活示例(我的React原生应用程序):

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);
    }
}

共有1个答案

於炯
2023-03-14

我认为不可能同时使用不同的OAuth服务器,比如Google和Facebook。我不确定是否可以使用firebase作为OAuth服务器。

在技能的“帐户链接”选项卡中,必须输入要使用的OAuth服务器的详细信息,并且必须在accountLinkRequest中输入用于OAuth登录此服务器的重定向URI。

当您有自己的OAuth服务器时,请确保它在端口443上运行。我花了几个小时才发现它不适用于我的Node.js后端使用的端口3000。

 类似资料:
  • 我正在尝试为alexa设置视频技能,但是我不知道如何使用视频api播放视频。 我试着搜索“alexa技能蟒蛇视频api”,但我只是得到了alexa技能工具包的链接。我也尝试阅读python sdk留档,但没有帮助。看来你得发个指令什么的。 目前我有 注意:当我检查留档时,它说你必须有视频网址,所以假设视频网址在一个叫做video_url的变量中。更多细节:自定义技能(没有视频应用模板或视频技能的交

  • 我对网络开发相当陌生,我一直试图使用Spotify应用编程接口用Python制作一个网络应用程序。 我试图尝试获得对用户帐户的授权,并尝试将其输入我的浏览器(用我的客户端ID替换CLIENTID):https://accounts.spotify.com/authorize?client_id=CLIENTID 然而,我得到了错误: 我有白名单http://example.com/callback

  • 我试图通过spotify Android Api在我的Android应用程序中实现spotify,当我试图获取访问令牌时,我得到的是“#”而不是“?”在重定向uri中设置GET参数,如下所示http://192.168.x.xx:8080/callbackspotify.php#access_token=BQA4Ze8sb-pbuvjjinzngb08rzhnngwj94k9dp_QADbo_Aa

  • 我刚刚在CNN上读完斯坦福CS231n的笔记,有一个现场演示的链接;但是,我不确定演示中的“激活”、“激活梯度”、“权重”和“权重梯度”指的是什么。以下截图是从演示中复制的。 混淆点1 首先,我对输入层的“激活”是指什么感到困惑。根据注释,我认为激活层指的是CNN中的RELU层,它本质上告诉CNN应该点亮哪些神经元(使用RELU函数)。我不确定这与如下所示的输入层有何关系。此外,为什么会显示两幅图

  • 我试图连接到Spotify API。 我得到授权代码: 到目前为止还不错,我得到了代码。然后我试着用: 我有我能想象到的所有变化http://localhost:8000Spotify仪表板中的白名单: 但是我得到了这个错误: 编辑:奇怪的是,我可以成功地链接到隐式授予客户端方法,使用重定向URIhttp://localhost:8000——所以我知道这是正确的白名单。我在上面发布的代码中使用了这

  • 我正在通过这个sdk集成Instagram登录https://github.com/crino/instagram-ios-sdk 我用重定向URI"http://www.webvillee.com/callback"注册了我的应用程序,并获得了客户端ID和秘密ID。 现在,当我想通过应用程序登录时,它显示错误400“重定向URI与注册的重定向URI不匹配”。 我还试图在安全会话中用ig Clie