0

facebook validationjQueryボタンに実装したい簡単なものがあります。
ユーザーがボタンをクリックすると、ログインしているかどうかを確認し、TRUE の場合はテキストを変更します。true/false 状態を返すことについて説明しているこの記事
を見つけましたが、コードに実装しようとすると機能しませんでした。 うまくいかない提案があれば、よろしくお願いします。

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;
});

動作するようになりました:
answer に似ていますが、 did it を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 に答える