大多数尝试使用 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/