1

有什么方法可以使用 API 为 ALEXA 技能管理 API 授权生成 LWA 令牌?

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

任何帮助是极大的赞赏。

4

2 回答 2

1

您可以从 Node 中点击 SMAPI 以使用 SMAPI Node.js SDK,此处提供的文档带有您使用 ASK CLI 生成的刷新令牌。您只需生成一次刷新令牌,然后就可以重复使用它。

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

  1. 设置 LWA 安全配置文件。
  2. 使用 ASK CLI 将您的 LWA 客户端 ID 和客户端密码交换为使用ask util generate-lwa-tokens --client-id <Client ID> --client-confirmation <Client Secret>.
  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

于 2020-11-16T14:14:31.957 回答
0

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

一是您希望各种客户/帐户能够登录并使用 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" 错误,它可能已过期
    • 尝试使用刷新令牌获取新令牌
      • 如果可行,请开始使用新令牌,直到它过期
于 2020-08-22T07:36:05.590 回答