Mobile iOS 6上的FB.login()不会将控制权返回到异步执行的脚本

Mobile iOS 6上的FB.login()不会将控制权返回到异步执行的脚本,mobile,login,ios6,facebook-javascript-sdk,Mobile,Login,Ios6,Facebook Javascript Sdk,我创建了Facebook Bug ID 517124631665353来询问这个问题,但我不确定这是Facebook的JS SDK还是iOS 6附带的最新版本mobile Safari的Bug。这只发生在运行iOS 6的iPhone和iPad上 请尝试以下每个FB Rell示例: 普通警报: 登录和权限 document.getElementById'fb-login'.onclick=function{ var cb=函数响应{ Log.info'FB.login callback',响应;

我创建了Facebook Bug ID 517124631665353来询问这个问题,但我不确定这是Facebook的JS SDK还是iOS 6附带的最新版本mobile Safari的Bug。这只发生在运行iOS 6的iPhone和iPad上

请尝试以下每个FB Rell示例:

普通警报:

登录和权限 document.getElementById'fb-login'.onclick=function{ var cb=函数响应{ Log.info'FB.login callback',响应; 如果response.status==“已连接”{ Log.info“用户登录”; }否则{ Log.info“用户已注销”; } 警报“这将在iOS 6的Mobile Safari上触发”; }; FB.logincb,{scope:'publish_actions'}; }; setTimeout中的警报:

登录和权限 document.getElementById'fb-login'.onclick=function{ var cb=函数响应{ Log.info'FB.login callback',响应; 如果response.status==“已连接”{ Log.info“用户登录”; }否则{ Log.info“用户已注销”; } setTimeoutfunction{alert'This never Fire on Mobile Safari,iOS 6.'},0; }; FB.logincb,{scope:'publish_actions'}; }; 在运行iOS 6的iPad和iPhone上,setTimeout中的警报不会触发。在iPad上,弹出窗口似乎在所有情况下都会自动关闭,但在iPhone中,弹出窗口不会关闭,只是有时用户会返回到原始页面


我们最初在www.expertflyer.com/mobile上看到了这个问题,在那里,一旦Facebook登录完成,我们就会发送一个AJAX请求。我们发现当AJAX请求返回时应该执行的代码从未执行过。在FB Rell示例中,使用setTimeout调用可以更简单地显示这一点,但通用性是在Facebook登录返回后不会执行异步代码。这在以前是有效的,我们没有对代码进行任何更改,这在早期版本的iOS和Android上也能正常工作。

作为一个实验,我尝试了这一方法,但它似乎很有效,尽管它很粗糙: