AWS Cognito 和 Alexa 账户链接的正确访问令牌 URI 是什么?

What is the correct Access Token URI for AWS Cognito and Alexa account linking?

我对如何将 Cognito 设置为 Alexa 中的帐户链接提供商感到有点困惑。到目前为止,在 Alexa 中,我有以下内容:

授权URL:

https://[domain].auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=[clientID]&redirect_uri=https://pitangui.amazon.com/api/skill/link/[random]

this 端点的文档支持这一点。然后我会认为 Access Token URI 会如下:

https://[domain].auth.us-east-1.amazoncognito.com/oauth2/token?grant_type=code&client_id=[clientID]&redirect_uri=https://pitangui.amazon.com/api/skill/link/[random]

此端点也在 docs 中。但这不起作用,我也对亚马逊如何将代码从 auth 端点传递到 token 端点感到困惑。我见过人们使用:

https://pitangui.amazon.com/api/skill/link/[random]?grant_type=code&client_id=[clientID]&redirect_uri=https://pitangui.amazon.com/api/skill/link/[random]

这是帐户关联的重定向 URI。在 Alexa 应用程序和 Alexa 网站中,我得到重定向不匹配。所有重定向都匹配。

我可以使用隐式流程让它正常工作,但我需要让它与授权代码流程一起工作,这样我才能拥有自刷新令牌。

我让它工作了,这是我必须做的:

授权代码流程:

Alexa Skill 配置页面需要以下内容:

帐户链接:

授权URL:https://[your-cognito-domain].auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=[your-client-id]&redirect_uri=https://pitangui.amazon.com/api/skill/link/[vendor-id-amazon-gives-you]&state=[random-string-of-your-choosing]

文档说状态是可选的,但没有它我无法使授权码流工作。

客户端 ID: 与授权 URL 中的客户端 ID 相同。这来自 Cognito 中的 App Clients 页面。这对我来说是个大难题,我以为这是随机的,但不是,它需要匹配上面的客户端 ID。

域列表,范围:我不需要这些。

授权授予类型:授权码授予

访问令牌 URI:https://[your-cognito-domain].auth.us-east-1.amazoncognito.com/oauth2/token?state=[same-string-as-the-one-in-auth-url]

客户端密码:这来自 Cognito 中的应用程序客户端页面。

Cognito 应用客户端设置:

启用的身份提供商: Cognito 用户池

回调URL(s): https://pitangui.amazon.com/api/skill/link/[vendor-id-amazon-gives-you-in-alexa-config-page]

退出 URL(s):https://[your-cognito-domain].auth.us-east-1.amazoncognito.com/logout?response_type=code&client_id=[your-client-id]&redirect_uri=https://pitangui.amazon.com/api/skill/link/[vendor-id-amazon-gives-you]

我在这里放弃隐式授权作为奖励:

隐式授权流程:

授权URL:https://[your-cognito-domain].auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=token&client_id=[your-client-id]&redirect_uri=https://pitangui.amazon.com/api/skill/link/[vendor-id-amazon-gives-you]

正如我之前所说,我不必在这里使用状态。

客户端 ID: 与授权 URL 中的客户端 ID 相同。这来自 Cognito 中的 App Clients 页面。这对我来说是个大难题,我以为这是随机的,但不是,它需要匹配上面的客户端 ID。

域列表,范围:我不需要这些。

授权授予类型:隐式授予

Cognito 应用客户端设置:

启用的身份提供商: Cognito 用户池

回调URL(s): https://layla.amazon.com/spa/skill/account-linking-status.html?vendorId=[vendor-id-amazon-gives-you-in-alexa-config-page]

退出 URL(s): https://[your-cognito-domain].auth.us-east-1.amazoncognito.com/logout?response_type=token&client_id=[your-client-id]&redirect_uri=https://layla.amazon.com/spa/skill/account-linking-status.html?vendorId=[vendor-id-amazon-gives-you-in-alexa-config-page]