检查用户是否喜欢页面或不(Check if user liked page or not)

2019-10-31 14:33发布

我读了很多相关的话题在这里关于这个问题,但我仍然不能够做这样的事

http://www.facebook.com/Dominos/app_252492331452398

下面是我使用的代码

这里是我的问题。

  • 所以我已经登录到我的Facebook页面
  • 如果我去上面的多米诺骨牌网址,我可以相同的或不同的页面。 基于我是否喜欢或不像页面多米诺含量的变化。 但是,他们并没有要求我们重新登录
  • 在下面虽然我在Facebook上已经登录我的代码。 直到我点击登录按钮,并在弹出提供再次登录在我没有获得访问我用户信息。 我怎么可以跳过这一步的多米诺骨牌正在做什么。 我越来越response.status为NOT_AUTHORIZED

    • 我知道,一旦我登录,我可以这样做,以检查用户是否喜欢我的网页或不

    VAR =查询FB.Data.query( '选择从page_fan PAGE_ID其中uid =' + response.authResponse.userID + '和PAGE_ID =' + PAGE_ID);

下面是代码

<!DOCTYPE html>
<html>
<head>
  <title>Fbjquery</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div id="fb-root"></div>
<h2>Updated JS SDK example</h2><br />
<div id="user-info"></div>
<p><button id="fb-auth">Login</button></p>


<script>
window.fbAsyncInit = function() {
  FB.init({ appId: 'App_ID', 
        status: true, 
        cookie: true,
        xfbml: true,
        oauth: true});

  function updateButton(response) {
    var button = document.getElementById('fb-auth');
        console.log("inside update button "+response.authResponse);
    if (response.authResponse) {
        console.log(response.authResponse);
      //user is already logged in and connected
      var userInfo = document.getElementById('user-info');
      FB.api('/me', function(response) {
        userInfo.innerHTML = '<img src="https://graph.facebook.com/' 
      + response.id + '/picture">' + response.name;
        button.innerHTML = 'Logout';
      });
      button.onclick = function() {
        FB.logout(function(response) {
          var userInfo = document.getElementById('user-info');
          userInfo.innerHTML="";
    });
      };
    } else {
      //user is not connected to your app or logged out
      button.innerHTML = 'Login';
      button.onclick = function() {
        FB.login(function(response) {
      if (response.authResponse) {
            FB.api('/me', function(response) {
          var userInfo = document.getElementById('user-info');
          userInfo.innerHTML = 
                '<img src="https://graph.facebook.com/' 
            + response.id + '/picture" style="margin-right:5px"/>' 
            + response.name;
        });    
          } else {
            //user cancelled login or did not grant authorization
          }
        }, {scope:'email'});    
      }
    }
  }

  // run once with current status and whenever the status changes

  FB.getLoginStatus(updateButton);
  FB.Event.subscribe('auth.statusChange', updateButton);    


};

(function() {
  var e = document.createElement('script'); e.async = true;
  e.src = document.location.protocol 
    + '//connect.facebook.net/en_US/all.js';
  document.getElementById('fb-root').appendChild(e);
}());

</script>

</body>
</html>

Answer 1:

您可以以编程的方式做到这一点为好,不一定只是一个标签的情况下。

请注意,它会要求你从你的用户要“user_likes”许可O型验证连接对话框。

该代码段将测试是否有人目前喜欢的东西或不:

    FB.api('/me/likes/MY_PAGE_ID', {limit: 1}, function(r) { 
        if (r.data.length == 1) {
            //do stuff when the user is a liker
        } else {
            //do stuff when the user is not currently a liker           
        }
    });

如果你想赶上事件,当用户点击该按钮一样,那么你可以使用FB.Event.subscribe:

    FB.Event.subscribe('edge.create',
         function(response) {
              //Do stuff when the user just clicked a "like" button
         }
    );


Answer 2:

在Facebook的粉丝页面,当用户点击了Like按钮,整个页面重新加载获取和Facebook发送一个HTTP POST到您的网站有一个参数调用signed_request,你将需要解码并查看与服务器代码。 签名的请求被记录在这里 。 一旦被解码,则需要看page.liked值。

可能会有所帮助:

球迷只在Facebook中的内容与asp.net C#SDK



文章来源: Check if user liked page or not