在我的网站登录到facebook - javascript sdk

时间:2015-05-26 07:52:13

标签: javascript facebook

我正在从我的网站登录到facebook的任务,我从这里获得了代码github。 这是代码:

    $(function() {

    var app_id = my_app_id;
    var scopes = 'email, user_friends, user_online_presence';

    var btn_login = '<a href="#" id="login" class="btn btn-primary">Log In</a>';

    var div_session = "<div id='facebook-session'>"+
                      "<strong></strong>"+
                      "<img>"+
                      "<a href='#' id='logout' class='btn btn-danger'>Log Out</a>"+
                      "</div>";

    window.fbAsyncInit = function() {
            alert("init");

        FB.init({
            appId      : app_id,
            status     : true,
            cookie     : true, 
            xfbml      : true, 
            version    : 'v2.1'
        });


        FB.getLoginStatus(function(response) {
            statusChangeCallback(response, function() {});
        });
    };

    var statusChangeCallback = function(response, callback) {
        console.log(response);

        if (response.status === 'connected') {
            getFacebookData();
        } else {
            callback(false);
        }
    }

    var checkLoginState = function(callback) {
        FB.getLoginStatus(function(response) {
            callback(response);
        });
    }

    var getFacebookData =  function() {
        FB.api('/me', function(response) {
            $('#login').after(div_session);
            $('#login').remove();
            $('#facebook-session strong').text("welcome: "+response.name);
            $('#facebook-session img').attr('src','http://graph.facebook.com/'+response.id+'/picture?type=large');
        });
    }

    var facebookLogin = function() {
        checkLoginState(function(data) {
            if (data.status !== 'connected') {
                FB.login(function(response) {
                    if (response.status === 'connected'){
                        getFacebookData();
                    }
                }, {scope: scopes});
            }
        })
    }

    var facebookLogout = function() {
        checkLoginState(function(data) {
            if (data.status === 'connected') {
                FB.logout(function(response) {
                    $('#facebook-session').before(btn_login);
                    $('#facebook-session').remove();
                })
            }
        })

    }



    $(document).on('click', '#login', function(e) {
        e.preventDefault();

        facebookLogin();
    })

    $(document).on('click', '#logout', function(e) {
        e.preventDefault();

        if (confirm("Are you sure"))
            facebookLogout();
        else 
            return false;
    })

})

我在facebook开发者上创建了一个帐户并获得了我在代码中放入的id(my_app_id),问题是当我使用其他帐户登录时,返回的响应对象会给我“not_authorized”状态。 我希望能够使用任何帐户登录并获取我想要的信息(如user_name,profile_picture等...)。只有当我使用我在facebook开发人员上创建的帐户登录时,才会收到这些信息。 另一个问题是:

var facebookLogin = function() {
    checkLoginState(function(data) {
        if (data.status !== 'connected') {alert("facebookLogin");
            FB.login(function(response) {
                if (response.status === 'connected'){
                    getFacebookData();
                }
            }, {scope: scopes});
        }
    })
}

当我登录帐户时,它会获取Facebook数据,这是帐户未登录的条件。 我的意思是有一个行检查用户是否登录if (data.status !== 'connected'),其他条件是验证用户未登录?

1 个答案:

答案 0 :(得分:0)

我建议您在没有jQuery或其他第三方库的空白页/项目中使用docs中的最新API和指南开始测试。

一旦设置完成并正常工作,就开始添加其他库,看看它是怎么回事。

此外,如果您在使用不同帐户测试应用时遇到问题,最有可能的原因是您的应用处于开发模式,并且您正在测试的帐户未添加到应用的角色中,因此他们实际上无法访问您的应用。尝试将其他帐户添加为admindevelopertester并再次测试:https://developers.facebook.com/apps/{APP-ID}/roles/

相关问题