我已经安装了AWS Amplify CLI,并通过Facebook添加了联合身份验证。在Cognito中,属性被适当地映射。
在使用AWS Amplify(aws-amplify)React库时,通过Auth组件,我向用户提供了一个用于登录的按钮,该按钮调用Auth.federatedSignIn({provider:'Facebook'})。呼叫成功转到Facebook,并成功重定向回我的应用。
但是,我收到一条错误消息,说“需要用户名属性映射”。但是当我进入Cognito时,我已经将用户名映射到ID。关于我为什么会收到此错误的想法?
答案 0 :(得分:0)
TLDR::在应用程序的Facebook开发人员门户设置中关闭“要求应用程序保密”。
直到我尝试以更直接的方式(即,在Amplify之外)使用Facebook的登录名后,我才能查明更有价值的错误代码。我终于收到错误消息“来自服务器的API调用需要一个appsecret_proof参数”,这导致我here。
Facebook团队回应:
此问题是由后端更改引起的,该更改使appsecret_proof与JavaScript API不兼容。在评估更改后,已决定必须保留此行为。因此,对于使用JavaScript API的应用程序,您现在需要取消选中“需要应用程序密码”。然后,您可能想为服务器端逻辑设置一个单独的应用程序,以便可以使用appsecret_proof来提高安全性。
一旦我关闭“ Require App Secret”,就设置好了。如果对于您的应用程序来说,安全级别无关紧要,那么除非Amplify提供了某些服务器端版本,否则这是唯一的答案。