0

我有一个简单的facebook validation我想实现到我的 jQuery 按钮。
当用户单击按钮时,它应该检查是否已登录,如果为 TRUE,则更改文本。
我发现这篇文章谈到了返回真/假状态,但是当我尝试在我的代码中实现它时它没有工作。

任何我出错的建议,谢谢。

function fb_loginCheck(){
    FB.getLoginStatus(function(response, e) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            e.returnValue = true;
        } else if (response.status === 'not_authorized') {
            // the user is logged in to Facebook, but has not authenticated your app
            fb_oAuth();
            e.returnValue = false;
        } else {
            // the user isn't logged in to Facebook.
            fb_oAuth();
            e.returnValue = false;
        }
    }, true);
}


$('.myBttn').click(function(){

    var io = return fb_loginCheck();
    if (io){
        $this = $(this).text();
        if($this == 'yes')
            $(this).text('no');
        else
            $(this).text('yes');
    }

    return false;
});

让它工作:
类似于potench答案,但删除了e.returnValue

function fb_loginCheck(callBack){
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            callBack(true);
        } else if (response.status === 'not_authorized') {
            fb_oAuth();
            callBack(false);
        } else {
            fb_oAuth();
            callBack(false);
        }
    }, true);
}
4

1 回答 1

1

这样的事情可能会奏效。我已经移动了这些方法,因此当从该FB.getLoginStatus方法返回响应时它们会被触发。

我传入了一个方法,该方法在来自的响应返回结果callBack时触发。FB.getLoginStatus另请注意,我必须重新调整$(this)变量的范围。

function fb_loginCheck(callBack){
    FB.getLoginStatus(function(response, e) {
        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            e.returnValue = true;
            callBack(true);
        } else if (response.status === 'not_authorized') {
            // the user is logged in to Facebook, but has not authenticated your app
            fb_oAuth();
            e.returnValue = false;
            callBack(false);
        } else {
            // the user isn't logged in to Facebook.
            fb_oAuth();
            e.returnValue = false;
            callBack(false);
        }
    }, true);
}


$('.myBttn').click(function(){
    var targ = $(this);

    fb_loginCheck(function (io) {
        targ.text( (io) ? "yes" : "no" );
    });

    return false;
});
于 2012-10-09T16:38:00.577 回答