3

我的 Facebook 应用程序有以下代码:

  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'XXXXXX', // App ID
      channelUrl : '/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here

        //***************************************************
        //* FanGate for Facebook
        //***************************************************
        var hideLogin = function(){
           $("#login-fb").hide();
        }

        var showLogin = function(){
           $("#login-fb").show();
        }

        var doLogin = function(){
            FB.login(function(response) {
              if (response.session) {
                   hideLogin();
                   checkLike(response.session.uid)
              } else {
                // user is not logged in
              }
            });
        }

        var checkLike = function(user_id){
            var page_id = "XXXXXXXXX"; //coca cola
            var fql_query = "SELECT uid FROM page_fan WHERE page_id = "+page_id+"and uid="+user_id;
            var the_query = FB.Data.query(fql_query);

                  the_query.wait(function(rows) {

                      if (rows.length == 1 && rows[0].uid == user_id) {
                          $("#thirsty_thursdays").show();                  
                      } else {
                          $("#fan_gate").show();
                      }
                  });        
        }


        FB.getLoginStatus(function(response) {
            console.log(response.status);
            if (response.status == 'connected') {
                hideLogin();
                checkLike(response.authResponse.userID)
            } else {
                showLogin();
            }
        }, true);

        $("#login-fb a").click(doLogin);    
  };

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

response.status总是回来not_authorized,我真的不清楚为什么。我登录到 Facebook,应用程序是一个简单的页面选项卡。我最近将 Facebook 上的应用程序添加到设置中,看看是否有帮助,但没有运气。

我没有在 Facebook JS SDK 文档上看到任何提供任何信息的附加信息。

如果用户登录并且是某个页面的粉丝,我基本上希望显示内容,如果没有,则隐藏内容。(俗称扇门)

4

1 回答 1

0

会将此作为评论发布,但我还不能...

在您的选项卡加载并且 FB.getLoginStatus() 响应指示“not_authorized”(因此,我假设显示您的登录按钮)之后 - 如果您然后单击登录按钮会发生什么?是否给 facebook 弹出提示来授权该应用程序?(我很犹豫要不要问这个问题,但你确定你已经授权了这个应用程序吗?)或者它什么都不做?

- 在 FB.login 的回调中。如果添加 console.log(response.authResponse) 会输出什么?

- 我相信 channelUrl 应该是完全合格的,而你有它是相对的。不确定这会对你的问题产生任何影响,但可能想尝试一下。见 https://developers.facebook.com/docs/ javascript/gettingstarted/#channel

于 2013-10-19T18:57:23.320 回答