AWS Cognito/Amplify 返回空刷新令牌

use*_*417 5 amazon-web-services oauth-2.0 amazon-cognito aws-amplify

我在 cognito 中有一个用户池,它使用 Google 作为身份提供者。现在,使用 Amplify,我们使用提供者作为“Google”执行 FederatedSign,如下所示。

Auth.federatedSignIn({ provider: "Google" });。

这给了我访问令牌,id 令牌。但是刷新令牌是空的。这是用于 oauth responseType:'token' 配置。

我在其他地方看到我们需要将授权类型更改为“代码”,即 responseType: 'code' 以获取刷新令牌。

但是在这种情况下,我在回调 url 中得到了“code = some-value”,而不是访问令牌和刷新令牌。

我在这里缺少什么?

我的目标是能够获得刷新令牌 - 一旦访问令牌无效,使用此 Amplify 将刷新会话。

Kev*_*ski 6

您需要oauth.responseType将配置更改'code''token'. 当我这样做时出现错误,我不知道为什么,但这就是我发现你需要做的。

  • 我开始查看[此处](https://auth0.com/docs/protocols/protocol-oauth2)的文档,看起来“code”是[授权代码流](https://auth0.oauth2)的简写。 com/docs/protocols/protocol-oauth2)。“令牌”似乎仅用于短期访问。 (3认同)
  • 我解决了这个问题。事实证明,用于登录和注销的重定向 URL 必须与您发出请求的域相同,即从 localhost:3000 发出请求,重定向也必须返回到 localhost:3000。为了进行测试,我使用 localhost:5500,因此它给出了空令牌。(我的 oauth 响应类型是代码)(在 cognito 设置中检查一次。)当重定向带有 URL 中的“代码”时,Amplify 会选取此内容并发出另一个请求以获取刷新令牌和其他凭据(到认知令牌端点。) (2认同)