posted by 생존본능 2011.06.21 17:46
크리에이티브 커먼즈 라이선스
Creative Commons License
 안녕하세요 생존본능입니다.^^

댓글이 거의 없어서 그냥 허공에다 글을 쓰고 있는게 아닌가했어요.ㅠㅠ

 몇몇분이 달아주시는 댓글에 힘을 얻어  강좌아닌 강좌를 진행하겠습니다.

  오늘이야기는 저번에 진행했던 인증절차이후 정보를 가져오기입니다.


  보통 페이스북 게임같은경우에는 혼자서 하는 오락실 게임이 아니며,

 혼자하는 오락실 게임이라면 페이스북이 소셜네트워크라며 칭송받으며 팽창할수없었을겁니다.

 페이스북은 나의 정보와 내친구 정보를 제공함으로써,
 
 친구들과 게임을 같이 할수있고 내정보를 기록해 다른 제3자와 경쟁을 환경을 만들수있습니다.

 이러한 부분의 기초가 될수있는 이번강좌는 접속자의 정보를 가져오는 방법입니다. 

 ' 페이스북에서 인증을 받았으니 정보를 주세요 ' 라고 말로해봐야 소용없는일이고,

 알아야 쓰는거지 그걸 모르면 인증은 받으나 마나겠죠?ㅎ
 
  페이스북에서는 정보가져올때 효율적으로 사용하게끔만들기위해서

 Facebook에서는 sdk 라는것을 배포하고있습니다.

 가장 먼저해야 할일은 이 sdk를 내컴퓨터로 다운받는것입니다.

 저는 php를 사용할것이기 때문에 php sdk를 다운받겠습니다.


 https://github.com/facebook/php-sdk/ 

 위 주소로 이동하셔서 Downloads를 클릭하여줍니다.

 
클릭하면 뜨는 창에서 저는 윈도우기 때문에 .zip 를 다운받겠습니다.



다운받은 파일을 이제 압축을 풀어서 사용하면 됩니다.

압축을 풀면 폴더의 이름이 ' facebook-php-sdk-5ab1f64 ' 라고 나오는데,

 import할때 불편하여 src라는 이름으로 폴더명은 변경하였습니다.

 이렇게 하시면 기본적으로 정보를 가져올 준비는 끝난것입니다.

 준비가 끝났으면 정말 정보를 가져오는지 확인해보겠습니다.

 Facebook에서는 처음시작할때 사용하라고 예제파일도 친절하게 공개해주고있습니다.

 예제파일을 압축을푼 폴더에들어가셔서 examples 폴더로 이동합니다.




그러면 폴더안쪽에 ' example.php ' 라고있는데, 이 파일을 복사하여

 가장 위쪽에 폴더로 복사하여 넣어줍니다.




그리고 전시간에 사용했던 index.php 파일을 가져오면 됩니다.

 절차상 유저정보를 가져오기위해서는 아래와 같습니다.

 유저가 경로를 통해 입장 -> 허가받기 -> 유저정보가져오기

 그렇기때문에 허가받기를 아직하지 않으신분은
 
' [FaceBook] Ex02 페이스북 허가요청 받기. ' 를 먼저 진행해주시기 바랍니다.

 



 위절차를 진행하신분은 위와같은 화면이 나오게됩니다.

 그러면 두 소스를 연결해보겠습니다.


 example.php 파일을 더블클릭하여 열어줍니다.

 그이후 소스에서 example.php를 include하여줍니다.

example.php

 <?php   $app_id = "215395148479334";   $canvas_page = "http://apps.facebook.com/testaefesd/";
$auth_url = "http://www.facebook.com/dialog/oauth?client_id="
  . $app_id . "&redirect_uri=" . urlencode($canvas_page);

   $signed_request = $_REQUEST["signed_request"];
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

    if (empty($data["user_id"])) {
  echo("<script> top.location.href='" . $auth_url . "'</script>");     } else {
   include_once("example.php");
    }
 ?>



 example.php를  더블클릭하여 오픈하여줍니다.

소스를 보면 경로가 바뀐부분이 있는데, 이부분을 바로잡도록 하겠습니다.

 



 <?php   //require 'src/facebook.php'; require 'src/facebook.php';

 ?>

 위와 같이 경로를 존재하는 위치로 변경하여줍니다.


 




 그리고 위쪽의 (1)appId , (2)secret  번을 아래 그림의 값을 적어주면 됩니다.

 



 그리고는 확인해보면 짠~

 


 
   하고 오류가 나오네요.;;

세션을 여번 사용한경우 발생되는데 이럴때는 src/facebook.php 소스안에서

 



 
@session_start(); 으로 값을 수정해주시면 됩니다.

 저는 38번째 줄이네요.^^

 그리고 한글 깨지는 부분은 제 블로글중 ' [PHP] PHP 한글 깨짐 현상 관련 수정 방법. '

 부분을 확인하시면 찾아 보실수있습니다.

 그러면 모두 완성된 페이지를 확인하실수 있습니다.

 





 좀더 자세한 내용은 서브강좌에서 다루도록 하겠습니다.^^

 그리고 다음강좌는 내 앱 또는 홈페이지에 FaceBook에서 제공하는 버튼 커뮤니티 연결하기입니다.^^


 이번내용은 요즘 공부할게 많아서 조금 늦어졌습니다. 죄송합니다.ㅠ

 회사다니다가 이직을 준비하는중이라 시간이 조금 들쑥날숙하네요.^^;

 취업전선에 뛰어들 준비중이라 그전까지는 열심히 작성하도록 하겠습니다. 

  감사합니다.

  ...그리고 혹시 괜찮으시다면 저랑 페이스북 친구해요...굽신굽신.ㅠㅠ

 도움되셨으면 추천부탁드리겠습니다.
  
신고
posted by 생존본능 2011.06.21 17:46
크리에이티브 커먼즈 라이선스
Creative Commons License


 



 오늘  강좌는 허가요청 받기입니다.


 FaceBook 안에 들어가는 게임의 경우 다른 인증없이 아무나 만들수있기때문에


 Facebook 에서는 유저정보및 기본정보를 제공하기가 어렵습니다.


 그래서 만들어진 기능이 허가받기입니다.


 허가받는 방법은 아래주소에 값을 적어 넣어주시면 완성됩니다.

 

 참 쉽죠?


https://www.facebook.com/dialog/oauth?
client_id=어플리케이션_아이디&redirect_uri=캔퍼스_페이지

 


어플리케이션 아이디란 (1) 에 있는 내용을 적고, 캔퍼스 주소는 (2) 번의 내용을 적어주면 됩니다.

 만약 (2) 번인 ' 캔버스 페이지 ' 밑에있는 ' Canvas URL ' 을 적으시면 앱을 인증해도

 다음페이지로 넘어가지 못하고 계속 루프가 돌게됩니다. 

 

 그렇게 필요한 내용을 전부 넣어서 완성된 주소를 주소창에 붙여 넣으면


 어플리케이션 인증 화면이 나오게 됩니다.


https://www.facebook.com/dialog/oauth?client_id=215395148479334&redirect_uri=http://apps.facebook.com/testaefesd/ 

 

 이런식으로 인증받는 경우 내 어플리케이션 아이디와 되돌아올 캔퍼스 페이지를 넘겨주면

 

 Facebook에서 인증 화면을 띄워준이후 승인시 다시 캔퍼스 페이지로 넘어오게 됩니다.


제가 적은 위 주소로 이동해서 보시면,


 

 



 위화면처럼 정상적으로 나오면, 기본 정보에 접근이 완성 된것입니다.

 

 

 끝!!!! 이면 좋겠지만...

 

 이와같은 절차를 유저에게도 내 어플리케이션에 들어오기위해서는


 다른 유저에게도 저 주소로 이동해서 인증받고오세요.. 라고할수없기때문에


 유저가 입장시 저 페이지로 이동하여 인증받았는지 여부를 확인하는 코드가 추가되어야 합니다.

 

 하지만 이부분은 같은 경우 Facebook을 개발하는 개발자 모두가 같은 코드를

 

 적는 부분이기 때문에 Facebook에서 이미 정리가 되어있습니다.


 이부분만 복사하여 사용하면 됩니다.


 내용은 다음과 같습니다.


 

 <?php 

     $app_id = "YOUR_APP_ID";

     $canvas_page = "YOUR_CANVAS_PAGE_URL";

     $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page);

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {
            echo ("Hello " . $data["user_id"]);
     } 
 ?>



 YOUR_APP_ID 에는 (1) 내용이 YOUR_CANVAS_PAGE_URL 에는 (2) 내용이 들어가면 됩니다.


참고로 위에서 사용된 Json은 PHP 5.2부터 자체지원 되기 때문에 이전 버전에서는


위의 코드를 사용하면 오류가 발생하게 됩니다.


그럴때는 PHP 5.2 이하버전 Object 에 json_decode 사용하기. 로이동하셔서 확인하시면 됩니다.  


위 코드가 추가된 페이지에 접속하여 허가 클릭한 이후에


Hello!! + id 가 나오면 성공한것입니다.

 


코드가 추가된 내용은 첨부해 놓겠습니다.







그후에 메일 수신또는 뉴스피드 접근이 필요할경우 이전에 사용했던 주소 뒷편에

 

 &scope=email,read_stream 등을 붙여서


인증 받으면 정상적으로 출력되게 됩니다.

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID
     &redirect_uri=YOUR_CANVAS_PAGE&scope=email,read_stream


위 코드로 이동한 경우입니다.

 

기본정보접근 밑에 이메일 수신과 내뉴스피드의 게시물에 접근 이라는 인증 내용 추가된것을


확인하실수 있습니다.


허가받기 내용은 여기까지입니다.






그리고 메세지 보내는 방법과 공유요청등이 비슷한 방식으로 사용하게됩니다.


사용방법은 위 인증방식처럼 코드의 아이디와 캔퍼스를 수정하셔서 사용하시면 됩니다.


 이전사용했던 인증 방식과 동일하게 페이지에 넣어주시면 됩니다.


 

<?php 

         $app_id = "YOUR_APP_ID";

         $canvas_page = "YOUR_CANVAS_PAGE_URL";

         $message = "Apps on Facebook.com are cool!";

         $feed_url = "http://www.facebook.com/dialog/feed?app_id=" 
                . $app_id . "&redirect_uri=" . urlencode($canvas_page)
                . "&message=" . $message;

         if (empty($_REQUEST["post_id"])) {
            echo("<script> top.location.href='" . $feed_url . "'</script>");
         } else {
            echo ("Feed Post Id: " . $_REQUEST["post_id"]);
         }
?>




위 코드를 페이지에 추가하여 사용하면 아래와같이 페이지가 생성됩니다.

 

 위처럼 추가된 페이지에서 글을 쓰지면 정상적으로 내 담벼락에 글이 적혀지는 것을 확인

 

 할수있습니다.


위에서 글을 남기게 되면 접속된유저의 담벼락에 글을 적게 됩니다.

 

그리고 공유요청 코드는아래와 같습니다.

 

 

<?php 

         $app_id = "YOUR_APP_ID";

         $canvas_page = "YOUR_CANVAS_PAGE_URL";

         $message = "Would you like to join me in this great app?";

         $requests_url = "http://www.facebook.com/dialog/apprequests?app_id=" 
                . $app_id . "&redirect_uri=" . urlencode($canvas_page)
                . "&message=" . $message;

         if (empty($_REQUEST["request_ids"])) {
            echo("<script> top.location.href='" . $requests_url . "'</script>");
         } else {
            echo "Request Ids: ";
            print_r($_REQUEST["request_ids"]);
         }
?>

 

 

위 코드 추가시 아래와 같이 화면에 표시되게 됩니다.





FcaeBook에서 기본적으로 사용되는 코드는 공유되어있기때문에


http://developers.facebook.com


 페이스북으로 이동하셔서 참고하시면 많은 정보를 찾으실수 있으실 겁니다.


 그럼 여기까지입니다.


 다음에는 접속자의 기본적인 정보를 가져오는 방법을 진행하겠습니다.^^

신고
posted by 생존본능 2011.06.21 17:45
크리에이티브 커먼즈 라이선스
Creative Commons License

 

 FaceBook 관련 개발 자료는 역시 FaceBook이 최고입니다.

 

 http://developers.facebook.com/?ref=pf

 

 하지만 영문자료라 접근하기가 너무어려운데요,

 

 그래서 제가 했던부분 공유해드릴게요.^^

 

 코드한줄없이 추가만 하기입니다.ㅋ

 

 

 

 여기페이지에서 만들내용은

 

 

 

 이렇게 페이스북에 자신의 페이지를 넣는 작업입니다.

 

 

 

 

 시작하기전에 필요한 내용부터 체크하겠습니다.

 

 FaceBook 게임의 경우 FaceBook에서 보여지기는 하지만 앱페이지는 FaceBook이 아니라 본인이

 

 올린 페이지 이기 때문에 호스팅이 필요합니다.

 

 호스팅은 무료로 제공되는 싸이트나 유료 결재로 구입이 가능합니다.

 

 뭐 없으시다면 우선 테스트로 아래적혀있는 제 주소를 사용하셔도 테스트하는데는 지장이 없습니다.&^^

 

 

그럼 시작하겠습니다.

 

 우선 FaceBook 게임을 시작하기 위해서는 Facebook 로그인이후 개발페이지로 이동해야합니다.

 

 개발페이지는 위에 적어드렸던 http://developers.facebook.com/?ref=pf 로 이동합니다.

 

 

 

 그리고 우측 상단에 보시면 ' 내앱 ' 메뉴로 클릭하여 이동합니다.

 

 


새 앱 만들기를 클릭합니다.

 

이후 개인인증을 해야하는데 신용카드나 휴대폰 인증으로 인증이 가능합니다.

 

 

이후 어플리케이션이름을 추가한이후 동의를 선택

 

 어플리케이션 만들기를 시작합니다.

 

 이동하면 보안키를 입력하는 부분이 있는데 화면에 보여지는 보안키를 입력한후 이동하면 됩니다.

 

 

 

이동하면 앱에대한 기본정보창이 화면에 나오는데 설명등을 채워준이후

 

 FaceBook 통합으로 이동합니다.

 

 

 

 FaceBook통합으로 이동하면 다음과같은 화면이 보여집니다.

 

 위 화면에서 (1) 번부분은 FaceBook에서의 내 앱의 주소가될 주소이고,

 

 (2)번부분은 내 호스팅에있는 페이지 주소입니다.

 

 본인 호스팅에있는 페이지는 폴더안에 index.(php , html) 을 찾기때문에

 

 http://mbs723.cafe24.com/hello/

 

 계정안에 hello 폴더안에 index.html로 설정하였습니다.

 

 우선 본인 호스팅이 없다면 제 계정으로 테스트로 해도 상관없습니다.

 

 

 

 

위와 같이 채워넣어주면 되는데 (1)번의 캔버스페이지 같은경우 이미 다른사람이 사용하고있어, 존재하는경우가

 

 있기때문에 저는 임의 이름을 넣어주었습니다.

 

 그리고 아래 변경내용 저장을 클릭하여줍니다.

 

 

그러면 FaceBook에서 게임페이지가 완료되었습니다.

 

 본인 페이지가 보고싶다면 위에 (1)번내용에 적었던 내용 주소를 주소창에 적어주면 됩니다.

 

  저는 http://apps.facebook.com/abcdefdsasddf/ 이렇게 설정하였습니다.

 

 또는

 

 

 앱페이지 를 클릭하여 페이지를 이동한후

 

 

 

 

 앱으로 가기를 클릭하면

 

 


 Hello world

 Hello FaceBook

 이제 본인의 페이지를 확인하였습니다.

 이러면 기본적으로 본인의 페이지를 FaceBook에 넣는 작업은 완료되었습니다.

 

 이후에 다른사람들이 접근을 할때 게임을 FaceBook에서 인증작업이 들어가게 되는데요,

 

 이부분은 다음번에서 설명드리겠습니다.^ㅡ^

 

 수고하셨습니다.


저작자 표시 비영리
신고
posted by 생존본능 2011.05.29 03:04
크리에이티브 커먼즈 라이선스
Creative Commons License

 안녕하세요 생존본능입니다.

 PHP 5.2이하버전에서 어떻게 사용하시는지 질문하셔서, 그 내용 적어드립니다.^^

 우선 PHP 5.2버전에서는 JSON이 기본적으로 제공되나, 하위버전에서는 지원되지 않습니다.

 그렇기 때문에 json 라이브러리를 다운받아서 사용하셔야 하는데요,

 우선 라이브러리를 다운받기위해서는 아래싸이트로 이동합니다.

 http://www.json.org/

 
  



이동하셔서 아래쪽에 보시면 Services_JSON이라는 링크를 클릭하여 다운로드 페이지로 이동합니다.


 

 
이동하셔서 보시면 Links에서 가장 위에있파일을 클릭합니다.

 PEAR package file (.tgz) 클릭하셔서 다운로드 받으신후 압축을 풀어주시면 압축파일중에

JSON.php라는 파일이 저희가 사용할 파일입니다.

 제가 받은 파일도 같이 공유드리겠습니다.

 위 절차가 귀찮으신분은 제가받은 파일을 받아서 사용하셔도 됩니다.

  



 이제 기본적으로 사용할 준비는 끝났습니다.

 그럼이제 소스에서 JSON.php를 추가하주시면 됩니다.

 추가하는 방법은 우선 저는 이전에 있던파일과 같은 경로를 넣겠습니다. 

 

 
그리고 이전에 만들었던 index.php를 수정해주시면 됩니다.



 이전 PHP 5.2 이후버전에서는 json_decode 라고 호출해주면 됬지만

이번에는 라이브러리를 가져온것이기때문에 소스내에서도

require_once를 해주어야 합니다.

 require_once('JSON.php');
 
그리고 실제로 사용하기위해서 new 선언을 해주었습니다.
   $json = new Services_JSON(); 
 
이제 json_decode를 실제로 사용하기 위해서 호출해주셔야되는데

decode는 현재 위치에 있는것이 아니라 방금 선언한

$json에 있는것이고, 명령어는 json_decode가 아니라 decode 입니다.
   $json->decode(타겟, true); 


 아래와 같은 방법으로 사용해주시면 됩니다.
    require_once('JSON.php');
$json = new Services_JSON();
$json->decode(타겟, true);
 
 JSON  사용하는 방법은 여기까지입니다.

 하지만 JSON.php에서는 Object를 읽지 못하게됩니다.

 이럴때는

 

PHP 5.2 이하버전 Object 에 json_decode 사용하기.



 
에서 방법확인하시면 됩니다.





 그럼, 수고하셨습니다.


 ^ㅡ^

신고

티스토리 툴바