【问题标题】:Automating generating LWA Tokens自动生成 LWA 令牌
【发布时间】:2020-08-13 10:14:14
【问题描述】:

我有什么方法可以使用 API 为 ALEXA Skill Management API 授权生成 LWA 令牌?

现在,我正在通过 ASK-CLI 生成 LWA 令牌并将其复制粘贴到 ASK-SMAPI-SDK 代码中。是否有任何 API/方法可以自动执行此过程?

非常感谢任何帮助。

【问题讨论】:

    标签: alexa alexa-skills-kit alexa-skill login-with-amazon


    【解决方案1】:

    您可以从 Node 中点击 SMAPI 以使用 SMAPI Node.js SDK,提供可用的文档 here 以及您使用 ASK CLI 生成的刷新令牌。只需生成一次刷新令牌,即可重复使用。

    为了通过 SMAPI 进行身份验证,您需要执行以下操作:

    1. 设置 LWA 安全配置文件。
    2. 使用 ASK CLI 将您的 LWA 客户端 ID 和客户端密码交换为使用 ask util generate-lwa-tokens --client-id <Client ID> --client-confirmation <Client Secret> 的 LWA 刷新令牌。
    3. 在初始化 SMAPI 节点 SDK 时使用此刷新令牌:
    const Alexa = require('ask-smapi-sdk');
    
    // specify the refreshTokenConfig with clientId, clientSecret and refreshToken generated in the previous step
    const refreshTokenConfig = {
        clientId,
        clientSecret, 
        refreshToken
    }
    const smapiClient = new Alexa.StandardSmapiClientBuilder()
        .withRefreshTokenConfig(refreshTokenConfig)
        .client();
    

    然后您就可以通过 SDK 上的函数调用来访问 SMAPI!

    这方面的有用资源: https://levelup.gitconnected.com/email-yourself-daily-alexa-skill-metrics-updates-using-lambda-smapi-and-ses-9c16ac97c1f8

    【讨论】:

      【解决方案2】:

      有多种方法可以解释您的问题..

      一个是您希望各种客户/帐户能够登录并使用 Web 界面生成令牌,而不是您必须通过 CLI 手动生成它。

      如果是这样,则有许多支持 LWA 的 OAuth 库。我搞砸的最后一个是 Passport(用于 Node),但那是不久前的事了。只要确保您请求正确的范围,因为大多数库默认为配置文件范围。

      另一个问题是,您每次想要运行脚本时都会生成令牌,因为它们会过期。

      在这种情况下,ask util generate-lwa-tokens 命令会返回访问令牌和刷新令牌。访问令牌可以使用一个小时。刷新令牌可以无限期使用,但需要在最后一个令牌用完时(通常在发出后 3600 秒)换取新的访问令牌。

      考虑使用 ASK SMAPI SDK。

      https://developer.amazon.com/en-US/blogs/alexa/alexa-skills-kit/2020/05/three-tips-for-coding-with-the-alexa-smapi-sdk

      在 SDK 中,您向 SDK 客户端提供访问令牌和刷新令牌。如果访问令牌是灰尘,它将为您提供一个带有刷新令牌的新令牌并使用它。 SDK 为您完成了一些繁重的工作,因此您可能需要考虑一下。

      但也许您已经编写了自己的脚本并且不想转换它们。如果您想编写自己的客户端,以下是有关使用刷新令牌的 LWA 文档。它是一个 REST API,因此您只需能够生成 HTTP 请求。

      https://developer.amazon.com/docs/login-with-amazon/retrieve-token-other-platforms-cbl-docs.html#using-refresh-tokens

      工作流程是这样的……

      • 尝试使用访问令牌调用
      • 如果您收到 400 "invalid_token" 错误,可能已过期
        • 尝试使用刷新令牌获取新令牌
          • 如果可行,请开始使用新令牌直到它过期

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 1970-01-01
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        相关资源
        最近更新 更多