javascript - FB.login() 响应不一致

标签 javascript facebook authentication response user-location

大多数尝试使用 Facebook 登录的人都没有遇到任何问题,但大约 5% 的尝试注册的人却无法登录。我相信这个问题是由于有些人没有从我从 Facebook 得到的回复中获取某些信息。即使我已请求电子邮件和 user_location 权限,为什么有些人的回复中没有电子邮件和位置?

最佳答案

我查看了您的 JavaScript,发现了一些您应该检查的内容:

当您初始化 javascript SDK 时,您设置 cookie=false 和 status=false。我见过的大多数例子都将这些设置为 true。这可能与您看到的 5% 异常(exception)没有任何关系,但我不认为将它们设置为 true 会有什么坏处,而且可能会有所帮助。尝试一下,看看是否会有所不同。

我看到的更大问题是您的代码假设已授予权限。您确实需要检查 FB.login 回调中的响应对象。用户可能尚未登录,并且可能拒绝了某些权限。您需要检查响应对象以查看其中是否有错误。

您将需要查询权限表 (fql) 或访问/me/permissions 以了解他们授予的权限。如果 FB.login 回调响应对象告诉您什么是授予的,什么是拒绝的,那就太好了,但事实并非如此。

此外,我相信在某些情况下,人们没有在 Facebook 注册电子邮件或位置。

总结一下:您不能相信您会得到您所要求的内容,您需要检查响应对象并优雅地处理异常,重新提示进行身份验证,并显示一条消息,说明您重新提示的原因。

您可能需要考虑添加的另一件事是客户端日志记录工具,例如 log4javascript(或您自己的),它可以收集有关这些异常的更多信息。可能存在某种模式,例如特定浏览器不能很好地处理事情。

关于javascript - FB.login() 响应不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669291/

相关文章:

android - 移动应用程序的 2 因素身份验证

sql-server - SQL Server 2008 中的登录名和凭据有什么区别?

javascript - 如何在 React Native 中动态包含模块

javascript - Jquery - 创建一个 div 和其他子元素

ios - 通过 ios 应用程序将照片分享到 Facebook 后无法获取结果帖子 ID(Swift 和 FBSDK4.0.1)

javascript - 将查询字符串添加到 data-href

html - 使 facebook 分享/喜欢插件和 twitter 分享插件并排对齐

security - 登录时应该使用随机数吗?

javascript - 单击事件不会在 highcharts 工具提示中触发

php - 使用正则表达式过滤固定长度为0或4位的年份