출처 : http://www.uengine.org:8088/wiki/index.php/Facebook_Open_API_%ED%99%9C%EC%9A%A9(Javascript_SDK)

Facebook Open API 활용(Javascript SDK)

Uwiki

App ID를 발급받기 위한 application 등록
먼저 페이스북 OPEN API를 사용하기 위해서는 Facebook Platfrom API key(App ID)를 발급받아야 한다. Key를 만들는 과정은 다음의 과정을 따른다.

1. http://www.facebook.com/developers/createapp.php 로 가서 new application을 생성한다. 페이스북 id및 인증을 위한 모바일 폰 번호를 필요함.
2. 어플리케이션 이름을 입력한다.
3. Basic탭에서 모두 기본값을 사용하고 callback URL(자신의 도메인)은 반드시 넣도록 한다.
4. 생성된 API key를 적당히 메모해 둔다. 

자신의 application 정보는 http://www.facebook.com/developers/apps.php 에서 확인할 수 있다.



API 활용
다음은 자신의 페이지에서 Facebook OPEN API를 사용하기 위해 SDK를 로딩하는 과정으로 반드시 페이지 내에 추가해 주어야 한다.

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
 FB.init({
   appId  : 'APP ID',
   status : true, // check login status
   cookie : true, // enable cookies to allow the server to access the session
   xfbml  : true  // parse XFBML
 });
</script>


또는, 페이지 로딩 속도를 확보하기 위해 다음과 같은 코드를 사용할 수도 있다.

<script>
 window.fbAsyncInit = function() {
   FB.init({appId: 'your app id', status: true, cookie: true,
            xfbml: true});
 };
 (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>


FB.getLoginStatus()를 이용해서 유저의 로그인 상태 체크.

FB.getLoginStatus(function(response) {
 if (response.session) {
   // logged in and connected user, someone you know
 } else {
   // no user session available, someone you dont know
 }
});


FB.login()를 이용해서 페이스북로그인 창을 띄우기.

FB.login(function(response) {
 if (response.session) {
   // user successfully logged in
 } else {
   // user cancelled login
 }
});


FB.login()과 FB.getLoginStatus()를 이용해 이용해 다음과 같이 유저가 로그인 하도록 유도.

 FB.getLoginStatus(handleSessionResponse);
 function handleSessionResponse(response) { 
  if (!response.session) { 
   // Open login dialog box
   FB.login(handleSessionResponse);
   return; 
  } else{
   // already logged in
  }
 }


로그인 유저 정보 가져오기

function getUser(){
 FB.getLoginStatus(handleSessionResponse);
  function handleSessionResponse(response) { 
   if (!response.session) {
    //
   } else{
    FB.api( 
    {
      method: 'fql.query', 
      query: 'select uid,name,email,pic_square from user where uid  = "' + FB.getSession().uid + '"'
     }, 
    function(response) {
      for(var i=0; i < response.length; i++){
       response[i].uid; //유저아이디
       response[i].pic_square; // 사진
       response[i].name; // 이름
       response[i].email; // 이메일주소
      }
    } 
    );
   }
  }	 
}


내친구 리스트 가져오기

function getFriends(){
  FB.getLoginStatus(handleSessionResponse);
    function handleSessionResponse(response) { 
      if (!response.session) { 
         //
      } else{
        FB.api( 
         {
            method: 'fql.query', 
            query: 'SELECT uid, name, email, birthday, pic_square, online_presence  FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())'
         }, 
        function(response) {
          for(var i=0; i < response.length; i++){ 
             response[i].uid;
             response[i].pic_square;
             response[i].name;
             response[i].birthday;
             response[i].email;
             response[i].online_presence;
          }
        } 
        );
      }
   }
 }


내 담벼락의 글 가져오기

function getPersonalFeed(fbId){
   FB.getLoginStatus(handleSessionResponse);
     function handleSessionResponse(response) { 
        if (!response.session) { 
            alert("no login");
        } else{
          var path = '/me/feed';
          var num = 10;
          FB.api(path, { limit: num }, function(response) {
            for (var i=0, l= response.data.length; i< l; i++) {
               var info = response.data[i];
               if (info.message) {
                  info.id; // 글아이디
                  info.updated_time; // 갱신일
                  info.message; //글내용
                  info.from.name; //글쓴이
                }
             }
          });
        }
    }
  }
 }


내 담벼락에 새글 쓰고 id가져오기

function postPersonalFeed(fbId){
  FB.getLoginStatus(handleSessionResponse);
    function handleSessionResponse(response) { 
      if (!response.session) { 
         alert("No login");
      } else{
         var path = '/me/feed';
         var body = document.getElementById("info1").value;
         FB.api(path, 'post', { message: body }, function(response) {
             if (!response || response.error) {
                 alert("error");
              } else {
                 alert("successful with id [" + response.id + "]");
              }
         });
      }
   }
 }


내 담벼락의 특정 글에 코멘트 달고 글 id가져오기

function postPersonalComment(postId){
   FB.getLoginStatus(handleSessionResponse);
       function handleSessionResponse(response) { 
         if (!response.session) {
            alert("No login");
          } else{
            var path = '/'+postId + '/comments';
            FB.api(path, 'post', { message: body }, function(response) {
               if (!response || response.error) {
                  alert("error");
               } else {
                  alert("successful with id [" + response.id + "]");
               }
            });
          }
     }
 }


내 담벼락의 특정 글의 코멘트 가져오기

 function getPersonalComments(postId){
   FB.getLoginStatus(handleSessionResponse);
     function handleSessionResponse(response) { 
       if (!response.session) { 
          alert("No login");
       } else{
          var path = '/'+postId+'/comments';
          var num = 10;
          FB.api(path, { limit: num }, function(response) {
              for (var i=0, l= response.data.length; i< l; i++) {
                 var info = response.data[i];
                 info.id;
                 info.message";
              }
          });
       }
    }
 }


그룹 리스트 가져오기

 function getGroupList(){
   FB.getLoginStatus(handleSessionResponse);
     function handleSessionResponse(response) { 
       if (!response.session) { 
          alert("No login");
        } else{
           FB.api( 
           {
              method: 'fql.query', 
              query: 'SELECT gid, name, description, creator, icon FROM group WHERE gid IN (SELECT gid FROM group_member WHERE uid = me())'
           }, 
           function(response) { 
              for(var i=0; i < response.length; i++){
                response[i].gid;
                response[i].icon;
                response[i].name;
                response[i].description;
           }
        });
      }
   }
 }


그룹 담벼락의 글 가져오기

function getGroupFeed(groupId){
   FB.getLoginStatus(handleSessionResponse);
     function handleSessionResponse(response) { 
       if (!response.session) { 
         alert("no login");
       } else{
          var path = '/' + groupId + '/feed';
          var num = 5;
          FB.api(path, { limit: num }, function(response) {
              for (var i=0, l= response.data.length; i< l; i++) {
                  var info = response.data[i];
                  if (info.message) {
                     info.id;
                     info.updated_time;
                     info.message;
                     info.from.name+;
                  }
               }
         });
      }
    }
 }


그룹 담벼락의 특정 글에 코멘트를 쓰고 id가져오기

function postGroupComment(postId){
   FB.getLoginStatus(handleSessionResponse);
     function handleSessionResponse(response) { 
        if (!response.session) {
            alert("No login");
        } else{
            var path = '/'+postId + '/comments';
            FB.api(path, 'post', { message: body }, function(response) {
                if (!response || response.error) {
                    alert("error");
                 } else {
                     alert("successful with id [" + response.id + "]");
                 }
             });
       }
    }
 }


그룹 담벼락의 특정 글의 코멘트 가져오기

 function getGroupComments(postId){
    FB.getLoginStatus(handleSessionResponse);
      function handleSessionResponse(response) { 
         if (!response.session) { 
            alert("No login");
         } else{
            var path = '/'+postId+'/comments';
            var num = 10;
            FB.api(path, { limit: num }, function(response) {
            for (var i=0, l= response.data.length; i< l; i++) {
               var info = response.data[i];
               info.id;
               info.message;
            }
         });
       }
    }
 }


그룹 담벼락에 새글 쓰고 id가져오기

 function postGroupFeed(groupid){
    FB.getLoginStatus(handleSessionResponse);
       function handleSessionResponse(response) { 
         if (!response.session) { 
            alert("No login");
         } else{
            var path = '/'+groupid+'/feed';
            FB.api(path, 'post', { message: body }, function(response) {
               if (!response || response.error) {
                  alert("failed");
               } else {
                  alert("successful with id [" + response.id + "]");
               }
            });
         }
    }
 }




참고 사이트

개발자 사이트 : http://developers.facebook.com
Graph API : http://developers.facebook.com/docs/api
개발자 시작 가이드 : http://developers.facebook.com/docs/guides/web

+ Recent posts