[我正在尝试将Facebook登录流程集成到网站中(按照此页面:https://developers.facebook.com/docs/facebook-login/web,并且在尝试强制登录方式来请求访问用户的Facebook电子邮件地址时遇到问题。] >
特别是,我正在从我的JS执行以下代码:
FB.login((response) => { if (response.status === 'connected' && response.authResponse) { // Do something with the response here. } }, { scope: 'email', return_scopes: true });
[当用户成功登录时,响应以连接状态返回,并且我正在获取用户的用户ID,访问令牌等,但是当他们单击我的UI中调用
FB.login
的按钮时,弹出对话框,Facebook不会询问用户是否要授予对其电子邮件地址的访问权限。为什么?
对于我正在构建的网站,我需要访问用户的Facebook电子邮件地址。如果要问他们并拒绝访问,那是一回事,但是弹出的模式甚至没有要求他们访问其电子邮件地址,而且我也没有在响应中返回他们的电子邮件地址。
此外,如果我随后调用以下内容,则email
权限会以declined
的身份返回:
FB.api(`/${response.authResponse.userID}/permissions`, (response) => { console.log(response); });
有人知道为什么我不能提示用户访问其电子邮件地址吗?谢谢。
Edit
:值得一提的是,我正在localhost上对此进行测试,我想知道这是否有效。在Facebook for Developers仪表板中,我确实将localhost虚拟主机(例如site-name.test
)设置为允许重定向的URL,它的确使我可以使用Facebook登录并获取用户ID等,但从来没有提示用户访问其电子邮件地址。谢谢。我正在尝试将Facebook登录流程集成到网站中(按照此页面:https://developers.facebook.com/docs/facebook-login/web),并且在尝试强制执行时遇到问题登录模式...
再次感谢为错误的答案感到遗憾。没有这个,我将永远无法解决。综上所述,问题是在测试期间,我显然已经拒绝了提供对我的电子邮件地址的访问的请求,此后,它不再要求我允许访问它。
同样,您必须向FB.login
传递一个额外的参数,以强制其重新询问用户以访问其电子邮件地址。具体来说,它是authType
参数,这是传递它的方式: