Javascript FB登录失败(无错误,无任何内容)

Javascript FB登录失败(无错误,无任何内容),javascript,facebook,angularjs,Javascript,Facebook,Angularjs,我有一个移动网络应用程序(不是iOS),我正试图在上面使用共享对话。我正在记录整个过程的输出,这样我就可以看到系统在哪里崩溃了。当我在桌面浏览器上进行测试时,整个程序运行得非常完美。但是,当我在iPhone上测试时,系统会在FB.login()处停止。查看日志,我的webapp运行FB.getLoginStatus()很好。响应是状态为“未知”的对象。我有一个回调函数,它记录“getLoginStatus response.status!=connected”,然后尝试运行FB.login(函数

我有一个移动网络应用程序(不是iOS),我正试图在上面使用共享对话。我正在记录整个过程的输出,这样我就可以看到系统在哪里崩溃了。当我在桌面浏览器上进行测试时,整个程序运行得非常完美。但是,当我在iPhone上测试时,系统会在FB.login()处停止。查看日志,我的webapp运行FB.getLoginStatus()很好。响应是状态为“未知”的对象。我有一个回调函数,它记录“getLoginStatus response.status!=connected”,然后尝试运行FB.login(函数(response){})。回调的第一行是尝试记录“FB.login response”。那条线永远不会被记录。什么也没发生。这就好像webapp访问了FB.login(),然后什么都不做。我试过在那个位置运行其他函数(比如FB.api()),它们给出了正确的错误(没有authToken)。你知道会发生什么吗

示例代码:

FB.getLoginStatus(function(response) {
    console.log('getLoginStatus response:');
    console.log(response);
    if(response.status != 'connected') {
        console.log('getLoginStatus response.status != connected'); // THIS IS THE LAST THING I SEE IN MY CONSOLE
        FB.login(function(response) {
            console.log('FB.login response');
            console.log(response);
            if(response.status != 'connected') {
                console.log('Failed to log in');
            } else {
                console.log('You\'re logged in');
            }
        });
    } else {
        console.log('You\'re logged in');
    }
});
生成以下日志:

getLoginStatus response:
Object {status: "unknown", authResponse: null} 
getLoginStatus response.status != connected 

澄清:在此之后没有错误响应,也没有进一步的日志记录。反复点击共享按钮会得到完全相同的结果

确定-发现问题。我在最初的问题中忽略的是,这一切都是在Angular.js应用程序中调用的。事实证明,FB.login()函数需要在下一个周期中调用。因此,只需将FB.login函数包装在$timeout中(根据这里的答案:),就可以在下一个周期中运行它,现在一切都正常了。结束代码如下所示:

FB.getLoginStatus(function(response) {
    console.log('getLoginStatus response:');
    console.log(response);
    if(response.status != 'connected') {
        console.log('getLoginStatus response.status != connected'); 
        $timeout(function(){ //THIS IS THE FIX
            FB.login(function(response) {
                console.log('FB.login response');
                console.log(response);
                if(response.status != 'connected') {
                    console.log('Failed to log in');
                } else {
                    console.log('You\'re logged in');
                }
            });
        });
    } else {
        console.log('You\'re logged in');
    }
});