如何使用 FB.api 检查用户是否已经喜欢某个页面?

How to check whether user already likes a page or not using FB.api?

我使用下面的代码来检查用户是否已经喜欢该页面。

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

FB.getLoginStatus(function (response) {
      if (response && response.authResponse) {
         getAPIResponse();
      }
      else {
          FB.login(function (response) {
              if (response.authResponse) {
                   getAPIResponse();
              }
              else {
                document.getElementById('MainView').style.display = 'none';
                   }
          });
                }
            });
};

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

 function getAPIResponse() {
         FB.api("me/likes/XXXXXXXXXXXXX", function (response) {
                if (response.data.length == 1) {
                    document.getElementById('MainView').style.display = 'block';
                } else {
                    document.getElementById('MainView').style.display = 'none';
                    alert("Like our Page to show Calendar");
                }
            });
  }

以上代码以前工作正常。但是现在 response.data.length 总是返回零。如何解决上述问题?

您似乎没有请求使用类似信息所必需的 user_likes 权限。

此外,从您的代码示例来看,您似乎 "like-gate" Facebook 不允许的内容,因此可能不允许您通过登录审核,这是使用 [=10] 所必需的=].