AWS Cognito和Alexa帐户关联的正确访问令牌URI是什么?

时间:2018-02-07 15:12:21

标签: amazon-web-services amazon-cognito alexa-skills-kit alexa-skill

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

授权网址

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端点的文档备份。然后我认为访问令牌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中。但这不起作用,我也对Amazon如何将代码从auth端点传递到令牌端点感到困惑。我见过人们使用:

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网站中,我得到重定向不匹配。所有重定向都匹配。

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

1 个答案:

答案 0 :(得分:8)

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

验证码流程:

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

帐户关联:

授权网址 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]

文档说状态是可选的,但如果没有它,我就无法使用Auth Code流程。

客户端ID:与授权网址中的客户端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中的App Clients页面。

Cognito App客户端设置:

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

回调网址: https://pitangui.amazon.com/api/skill/link/[vendor-id-amazon-gives-you-in-alexa-config-page]

退出网址 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]

我在这里放弃了Implicit Grant作为奖励:

隐含授权流程:

授权网址 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:与授权网址中的客户端ID相同。这来自Cognito中的App Clients页面。这对我来说是一个很大的问题,我认为这是随机的但不是,它需要匹配上面的客户端ID。

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

授权授权类型:隐式授权

Cognito App客户端设置:

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

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

退出网址 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]