关于oauth 2.0:Amazon Cognito不提供联合身份提供商提供的刷新令牌(Google登录)

Amazon cognito not giving refresh token provided by federated identity provider (Google login)

我正在尝试通过Amazon Cognito添加Google登录名,已经设置了所有必需的内容,还配置了从google到我的池属性的属性映射,我已经将\\'access_token \\'属性映射到\\'google_access_token \\'属性和\\'refresh_token \\'到\\'google_refresh_token \\'。登录过程开始时,google会提示我所需的必需权限,然后重定向回我的应用程序,我可以在cognito仪表板上看到该用户添加了访问令牌,该访问令牌映射到\\'google_access_token \\'中,但那里没有刷新令牌。我仔细检查了每种配置,一切似乎都很好。我还尝试映射除刷新令牌以外的其他映射属性,例如\\'token_type \\'和\\'expires_in \\'。


我发现,要从google生成刷新令牌,客户端需要在开始使用google进行OAUTH登录时在Amazon Cognito不会发送的GET参数中传递" access_type = offline"参数,因此google不提供google刷新令牌。因此,简而言之,如果您使用的是Amazon cognito,则无法(现在为Atleast)从Google获取刷新令牌并"离线"访问Google API。另外,我使用了Auth0来支持此功能,并且可以将access_type参数发送给Google并可以存储刷新令牌。


如果我要问的话,您看过这份文件吗?

了解Amazon Cognito用户ool oauth 2.0授予
确切地说,这种担心可能是由于我们在Cognito用户池中设置的OAuth流所致。我们需要使用"授权代码授予"作为OAuth流程。隐式授予不会生成刷新令牌,但是授权代码授予会生成刷新令牌。

如果您在项目中使用Amplify框架,则此框架将为您完成大部分繁重的工作。您只需要正确设置用户池的应用程序客户端,然后为该特定应用程序客户端配置Amplify。

我希望这会有所帮助。