使用 Amplify 的 federatedSignIn 使用 Cognito 用户池登录 Facebook
Posted
技术标签:
【中文标题】使用 Amplify 的 federatedSignIn 使用 Cognito 用户池登录 Facebook【英文标题】:Facebook Login with Cognito User Pools using Amplify's federatedSignIn 【发布时间】:2021-10-07 23:34:44 【问题描述】:我正在尝试使用 aws-amplify
在 React 项目中使用 Cognito 用户池登录 Facebook。
我想我已经按照各种docs 正确设置了 Facebook 应用程序和 Cognito 用户池。请注意,我使用的是用户池而不是联合身份。
我在 React 方面有点卡住和困惑。我尝试了几个不同的guides,但结果都一样...
登录按钮触发此代码:
Auth.configure(
oauth:
domain: 'xxxxxxxxx.auth.eu-west-2.amazoncognito.com',
redirectSignIn: process.env.REACT_APP_FACEBOOK_REDIRECT_SIGN_IN,
redirectSignOut: process.env.REACT_APP_FACEBOOK_REDIRECT_SIGN_OUT,
responseType: 'token'
,
region: process.env.REACT_APP_AWS_REGION,
userPoolId: process.env.REACT_APP_USER_POOL_ID,
userPoolWebClientId: process.env.REACT_APP_USER_POOL_WEB_CLIENT_ID
)
Auth.federatedSignIn(provider: 'Facebook')
点击登录按钮后,页面被重定向并在 url 中以这个哈希结束:
https://localhost:3000/sign-in#access_token=xxx&state=xxx&token_type=Bearer&expires_in=3600
如果我随后调用Auth.currentAuthenticatedUser()
,我将没有用户(“用户未通过身份验证”),如果我尝试Hub.listen("auth")
,则被触发的唯一事件是parsingCallbackUrl
和configured
- 页面然后被重定向,并且永远不会触发 signIn
事件。
如果我然后再次点击登录按钮(当 url 有带有 access_token
等的哈希值时),我将成功登录。如果我删除哈希值并尝试登录,它会像上面一样失败.
有什么想法吗?我需要自己处理来自哈希的访问令牌吗?为什么Auth.federatedSignIn
似乎只有在访问令牌已经在哈希中时才有效?
【问题讨论】:
【参考方案1】:我刚刚解决了... Auth.configure
调用需要从组件中移出并移到 App.js
中。现在似乎一切正常。
【讨论】:
以上是关于使用 Amplify 的 federatedSignIn 使用 Cognito 用户池登录 Facebook的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 和 Amplify/Cognito:如何使用 Flutter 更新 Amplify/cognito 中的电话号码
如何使用 AWS/Amplify CLI 部署现有 Amplify 应用程序的新版本而无需用户交互?
使用 Amplify 集成构建 AWS Amplify React 应用程序时总是缺少 aws-exports.js
将现有 AppSync API 与/ Amplify 一起使用