본문 바로가기
dev/facebook

캔버스로 구현된 페이스북(facebook) 앱을 좋아하는지 여부에 따른 분기 개발. - PHP

by Kelvin™ 2013. 3. 20.

예전 자료의 수정 버젼.


로그인



<%@  codepage="65001" language="VBScript" %>
<%
Response.Expires      = -1440
Response.AddHeader "Pragma", "no-cache"
  Session.CodePage      = 65001
  Response.ChaRset      = "utf-8"
%>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#">
<head>
<title>facebook</title>

<style type="text/css">
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;

}
img{border:0px}

</style>
<div id="fb-root"></div>
<script type="text/javascript">

window.fbAsyncInit = function() {
    FB.init({
        appId : 'APP ID',
        status : true,
        cookie : true,
        xfbml : true,
        oauth  : true
    });

// Additional initialization code here

    FB.getLoginStatus(function(response) {
      if (response.status === 'connected') {
        check_likes();
        return;
        // connected
      } else if (response.status === 'not_authorized') {
        
        return;
        // not_authorized
      } else {
        login();
        return;
        // not_logged_in
      }
     });

   // facebook height auto resize
   FB.Canvas.setAutoGrow();
};


//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 = "https://connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));

  function login() {
    FB.login(function(response) {
      if (response.authResponse) {
        check_likes();
        return;
      } else {
        if (confirm("이벤트에 참가하시려면 로그인을 해주세요.\n\n확인 버튼을 누르면 로그인 창으로 이동합니다."))
        {
          login();
          return;
        } else {
          return;
        }
      }
    });
  }

function check_likes()
{
    FB.api({
      method:     "pages.isFan",
      page_id:    "PAGE ID"
    },  function(response) {
        if(response){
          alert("좋아요~2");
          return false;
        } else {
          alert("이벤트에 참가하시려면 페이지 좋아요 버튼을 눌러 주세요..");
          return false;
        }
      }
    );
  }

</script>

</head>
<body>

</body>
</html>


로그인된 사용자 중

해당 페이지 앱을 좋아요 누른 사람은 이 페이지를 좋아합니다 라는 메시지가 뜨고.
누르지 않은 사람은 좋아하지 않습니다라고 뜬다.

javascript 로만 생성됨.


===========================================================================================
인텔 코리아의 이벤트의 경우 http://www.facebook.com/IntelKorea?sk=app_273093602702438
앱 접근 허용 없이도 구현이 가능한데..

그래서 다시 PHP 로 재작성..
자스로 하는 방법을 도저히 못 찾아서 결국 PHP 로 만듬..


<?php

    require './src/facebook.php'; 

    $app_id = "[APP ID]";
    $app_secret = "[secret key]";
    $facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
    ));

    $signed_request = $facebook->getSignedRequest();

    $result = $facebook->api(array(
            'method' => 'fql.query',
            'query' => 'select uid from page_fan where page_id ="[pageID]" and uid="'.$signed_request["user_id"].'"'
        ));
        
        $fb_fans = $result[0]['uid'];

        if ($fb_fans) {
팬일때 표시해줄 부분
} else {
팬이 아닐때 표시해줄 부분
}
?>