Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook graph api 从函数返回FB.getLoginStatus_Facebook Graph Api_Facebook - Fatal编程技术网

Facebook graph api 从函数返回FB.getLoginStatus

Facebook graph api 从函数返回FB.getLoginStatus,facebook-graph-api,facebook,Facebook Graph Api,Facebook,当我运行以下脚本(仅相关代码段)而不是返回有效的fb.getLoginStatus时,我不明白为什么fb\u login\u status\u response在控制台中返回“未捕获引用错误:fb\u login\u status未定义”。如有任何想法/反馈,将不胜感激。谢谢 <script> function load_fb(){ window.fbAsyncInit = function() { FB.init({

当我运行以下脚本(仅相关代码段)而不是返回有效的fb.getLoginStatus时,我不明白为什么
fb\u login\u status\u response
在控制台中返回“未捕获引用错误:fb\u login\u status未定义”。如有任何想法/反馈,将不胜感激。谢谢

<script>
    function load_fb(){
        window.fbAsyncInit = function() {
            FB.init({
                appId      : '251975954634982', // App ID
                //channelURL : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
                status     : true, // check login status
                cookie     : true, // enable cookies to allow the server to access the session
                oauth      : true, // enable OAuth 2.0
                xfbml      : true  // parse XFBML
                }); // closes FB.init
            fb_login_status = FB.getLoginStatus(function(response){
                console.log("FB.getLoginStatus: ", response.status);
                // NOTE - the line above does log an accurate response.status in the console!
                response.status;
                // NOTE - I've tried putting the return statement here, but that doesn't work.
            });
        };
        return fb_login_status; // NOTE - this return statement is what generates the "Uncaught ReferenceError:..." in console
    }   

    // Load FB SDK Asynchronously
    (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));


    $(document).ready(function(){
        sb_session_status = checkIfSignedIn();
        if (sb_session_status == "valid"){
            $(".loggedIn").css("display","block");
            // Block of code for logged-in users goes here
        }
        else{
            fb_login_status_response = load_fb();
            console.log("fb_login_status_response: ", fb_login_status_response);
            // NOTE - else clause here to check if user signed-in via facebook
        }
    });
</script>

函数加载_fb(){
window.fbAsyninit=函数(){
FB.init({
appId:'25197545634982',//应用ID
//channelURL:'//WWW.YOUR_DOMAIN.COM/channel.html',//频道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
oauth:true,//启用oauth 2.0
xfbml:true//解析xfbml
});//关闭FB.init
fb_login_status=fb.getLoginStatus(函数(响应){
console.log(“FB.getLoginStatus:,response.status”);
//注意-上面的行在控制台中记录了准确的响应。状态!
答复.状况;
//注意-我试着把return语句放在这里,但这不起作用。
});
};
return fb_login_status;//注意-此return语句在控制台中生成“uncaughtreferenceerror:…”
}   
//异步加载FBSDK
(职能(d){
var js,id='facebook jssdk';if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
d、 getElementsByTagName('head')[0].appendChild(js);
}(文件);
$(文档).ready(函数(){
sb_session_status=checkIfSignedIn();
如果(sb_会话_状态==“有效”){
$(“.loggedIn”).css(“显示”、“块”);
//登录用户的代码块位于此处
}
否则{
fb_登录_状态_响应=加载_fb();
log(“FBU登录状态响应:”,fb登录状态响应);
//注意-此处的else子句用于检查用户是否通过facebook登录
}
});

由于
FB.getLoginStatus()
调用是异步(非同步)的,因此您需要将回调函数传递给
checkIfSignedIn()
函数,以便可以运行它。见:


非常有用。非常感谢。我还没有机会在我的程序中测试它,但是你的解释很有道理。我会在一切正常后再确认。
var checkIfSignedIn = function(callbackFn) {
    FB.getLoginStatus(function(response){
        console.log("FB.getLoginStatus: ", response.status);

        if($.isFunction(callbackFn)) {
            callbackFn(response.status=="connected" ? "valid" : "other");
        }
    });
};



$(document).ready(function() {
    checkIfSignedIn(function(sb_session_status){

        if (sb_session_status == "valid"){
            // DO SOMETHING with the logged in user
            $(".loggedIn").css("display","block");
        } else {
            // DO SOMETHING to get the user logged in
        }

    });
});