React-AWS Amplify Facebook登录-“需要用户名属性映射”

时间:2019-08-23 04:00:41

标签: reactjs amazon-web-services amazon-cognito aws-amplify

我已经安装了AWS Amplify CLI,并通过Facebook添加了联合身份验证。在Cognito中,属性被适当地映射。

在使用AWS Amplify(aws-amplify)React库时,通过Auth组件,我向用户提供了一个用于登录的按钮,该按钮调用Auth.federatedSignIn({provider:'Facebook'})。呼叫成功转到Facebook,并成功重定向回我的应用。

但是,我收到一条错误消息,说“需要用户名属性映射”。但是当我进入Cognito时,我已经将用户名映射到ID。关于我为什么会收到此错误的想法?

1 个答案:

答案 0 :(得分:0)

TLDR::在应用程序的Facebook开发人员门户设置中关闭“要求应用程序保密”。

直到我尝试以更直接的方式(即,在Amplify之外)使用Facebook的登录名后,我才能查明更有价值的错误代码。我终于收到错误消息“来自服务器的API调用需要一个appsecret_proof参数”,这导致我here

Facebook团队回应:

  

此问题是由后端更改引起的,该更改使appsecret_proof与JavaScript API不兼容。在评估更改后,已决定必须保留此行为。因此,对于使用JavaScript API的应用程序,您现在需要取消选中“需要应用程序密码”。然后,您可能想为服务器端逻辑设置一个单独的应用程序,以便可以使用appsecret_proof来提高安全性。

一旦我关闭“ Require App Secret”,就设置好了。如果对于您的应用程序来说,安全级别无关紧要,那么除非Amplify提供了某些服务器端版本,否则这是唯一的答案。