发布到Facebook如何获得响应而不刷新

时间:2011-07-30 18:49:56

标签: php jquery ajax

我有这个代码,如果用户没有通过facebook在check show facebook上登录,用户可以通过facebook登录。

if($req_user['oauth_provider'] != "facebook")
{
   <input type="checkbox" name="fb_post" id="fb_post" value="1" onclick="facebookPermissionsGrant(); return false;">}
?>

如果用户通过facebook show登录复选框选中:

if($req_user['oauth_provider'] == "facebook" && $CONFIG['fb_status'] == 1) {
 <input type="checkbox" name="fb_post" id="fb_post" value="1" checked>
}

我遇到的问题是,如果用户没有通过Facebook登录并检查checbox并在facebook上输入用户名和密码。他必须再次刷新页面才能看到该复选框。 有没有办法在ajax或jquery中,所以我不必刷新页面,如果用户登录它将显示框检查?

1 个答案:

答案 0 :(得分:0)

是的,有。 Facebook的Javascript API有FB.Event.Subscribe,当用户的登录状态发生变化时会通知你的javascript。

示例:

window.fbAsyncInit = function() {
    FB.init({
        appId  : 'YOURAPPID',
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml  : true,  // parse XFBML
        channelUrl  : 'http://www.yourdomain.com/channel.html', // Custom Channel URL
        oauth : true //enables OAuth 2.0
    });

    // retrieve the login status.
    FB.getLoginStatus(function(response) {
        if (response.authResponse) update_user_is_connected();
        else update_user_is_not_connected();
    });

    // This will be triggered as soon as the user logs into Facebook (through your site)
    FB.Event.subscribe('auth.login', function(response) {
        update_user_is_connected();
    });
};

您可以在此处详细了解FB.Event.subscribe:http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/