Ziyaretçinin Facebook sayfasını beğenip beğenmediğini nasıl kontrol ederim?

alattin (17125) 11 yıl önce sordu

Facebook üzerinde bir sayfam var ve sayfa içerisinde iframe uygulaması mevcut. Ben  facebook sayfamda kullanıcı eğer sayfamı beğenmiş ise işlem yapabilmesini istiyorum. Yani kullanıcı sayfamı ilk olarak beğenmeli daha sonra sayfa üzerindeki işlevleri kullanabilmeli. "Devam edebilmek için önce sayfayı beğenmelisiniz" şeklinde uyarı gösterip, kullanıcı sayfayı beğendiğinde bu uyarıyı  gizlemek istiyorum.

Kullanıcının facebook sayfasını beğenip beğenmediğini nasıl kontrol ederim?

Toplam 1 cevap


alattin (17125) 11 yıl önce cevapladı

Javascript ile facebook sayfasının beğenilmiş mi kontrol ederek eğer beğenilmemişse kullanıcıyı beğenmeye zorlayabilirsiniz.

Uygulamanızın gelişmiş özelliklerinden OAuth 2.0 for Canvas özelliğini açtıysanız, her sayfa isteğinde Facebook $_REQUEST['signed_request'] değerini gönderecektir.

function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
  }
  if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) {
      echo "Sayfa beğenilmiş";
    } else {
      echo "İlk olarak sayfayı beğenmelisiniz!";
    }
  }

 

Alternatif yöntem olarak şunu da kullanabilirsiniz:

<html>
  <head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <style type="text/css">
      div#container_notlike, div#container_like {
        display: none;
      }
    </style>
  </head>
  <body>
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : 'YOUR_APP_ID', // Uygulama ID'niz
          channelUrl : 'http(s)://YOUR_APP_DOMAIN/channel.html', // Channel dosyanız
          status     : true, // login durumunu kontrol et
          cookie     : true, // Session'a erişim için cookie'yi aç.
          xfbml      : true  // XFBML
        });

        FB.getLoginStatus(function(response) {
          var page_id = "YOUR_PAGE_ID";
          if (response && response.authResponse) {
            var user_id = response.authResponse.userID;
            var fql_query = "SELECT uid FROM page_fan WHERE page_id = "+page_id+"and uid="+user_id;
            FB.Data.query(fql_query).wait(function(rows) {
              if (rows.length == 1 && rows[0].uid == user_id) {
                console.log("Beğenmiş");
                $('#container_like').show();
              } else {
                console.log("Beğenmemiş");
                $('#container_notlike').show();
              }
            });
          } else {
            FB.login(function(response) {
              if (response && response.authResponse) {
                var user_id = response.authResponse.userID;
                var fql_query = "SELECT uid FROM page_fan WHERE page_id = "+page_id+"and uid="+user_id;
                FB.Data.query(fql_query).wait(function(rows) {
                  if (rows.length == 1 && rows[0].uid == user_id) {
                    console.log("Beğenmiş");
                    $('#container_like').show();
                  } else {
                    console.log("Beğenmemiş");
                    $('#container_notlike').show();
                  }
                });
              } else {
                console.log("Beğenmemiş");
                $('#container_notlike').show();
              }
            }, {scope: 'user_likes'});
          }
        });
      };

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

    <div id="container_notlike">
     Sayfayı beğenmediniz!
    </div>

    <div id="container_like">
      Sayfayı Beğendiniz!
    </div>

  </body>
</html>