Проверьте, понравилась ли пользователю страница или нет - PullRequest
0 голосов
/ 24 марта 2012

Я прочитал много связанных с этим тем здесь относительно этой проблемы, но я все еще не в состоянии сделать что-то подобное

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

Ниже приведен код, который я использую

вот мои вопросы.

  • Так что я уже зашел на мою страницу в фейсбуке
  • Если я перейду на вышеуказанный URL-адрес домино, мне может понравиться или не понравиться страница,Содержание домино изменяется в зависимости от того, понравилась мне страница или нет.Но они не просят нас войти снова
  • В моем коде ниже, хотя я уже вошел в свой Facebook.я не получаю доступ к своей пользовательской информации, пока не нажму кнопку входа и не войду снова в предоставленном всплывающем окне.как я могу пропустить этот шаг, как делает домино.Я получаю response.status как not_authorized

    • Я знаю, что после входа в систему я могу сделать что-то вроде проверки, понравилась ли пользователю моя страница или нет

    varquery = FB.Data.query ('выберите page_id из page_fan, где 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>

Ответы [ 2 ]

3 голосов
/ 24 марта 2012

Вы также можете сделать это программным способом, не обязательно просто в контексте вкладки.

Обратите внимание, что для этого потребуется запросить у пользователя разрешение "user_likes" в диалоговом окне подключения O-Auth.

Этот фрагмент кода проверяет, нравится ли кому-то что-то в данный момент:

    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
         }
    );
2 голосов
/ 24 марта 2012

На фан-странице Facebook, когда пользователь нажимает кнопку «Мне нравится», вся страница перезагружается, и Facebook отправляет на ваш сайт сообщение HTTP с параметром signature_request, который вам нужно будет декодировать и просматривать с помощью кода сервера. Подписанный запрос задокументирован здесь .После декодирования вам нужно будет посмотреть значение page.liked .

Может быть полезно:

Контент только для фанатов в facebook с asp.netC # sdk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...