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


 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


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


 그럼 여기까지입니다.


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

  1. 우끼리 2011.05.18 19:33 신고

    좋은 정보네요! 고맙습니다.

    • 생존본능 2011.05.19 09:29 신고

      글마다 답글달아주시니..감사드려요.ㅠ

  2. huk 2011.05.23 10:31 신고

    강좌 잘 보고있어요 ㅠㅠ
    php초보인데 웹호스팅한데서 json을 지원안해요 ㅠㅠ
    방법을 가르켜주세요 ㅠㅠ

  3. 석이 2011.05.23 18:54 신고

    모가 문제일까요 허가 뜨고 인증하면 페이지 루프가 걸려요
    캔버스페이지 계속 새로고침되요 ㅠㅠ

    참고로 인증 파일은 index.php로 만들었고
    캔퍼스 페이지가면 index.php바로 연결되는데
    무한루프가 되요 ㅠㅠ

  4. 석이 2011.05.23 19:11 신고

    오류 해결됐네요 php명을 바꾸고 그 php로 실행시키니
    인증 뜨고 캔버스 url로 연결은 잘됩니다.
    근데 인증을 앱url로 쳐서 들어갈때 바로 뜨는건 어떻게 하는건가요?
    Hello!! + id 또한 안나옵니다.
    user_id를 못가져오는듯한데 ㅠㅠ

    • 생존본능 2011.05.24 13:25 신고

      " [FaceBook] Ex02 페이스북 허가요청 받기. " 부분을 다시한번 천천해 해보시고 그래도 안되시면, 소스를 보여주시면 같이 확인해드리겠습니다.

  5. 끼룩 2011.05.27 15:01 신고

    더 연재 안하시나요? 강의 기다리는데 뜸하네요 ㅋㅋ

    • 생존본능 2011.05.27 17:17 신고

      지금 작성중이고 마무리단계있습니다.
      쪼~금만 더 기다려주세요~^^

  6. 강성철 2011.05.29 03:00 신고

    좀 문제가 있네요 json없어서 php강좌 그대로 따라했습니다.
    index.php만들고 소스 그대로해서 앱아뒤랑 캔버스페이지만 수정했는데
    앱 들어가면 새로고침만 무한 반복됩니다.

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

    로그인을 해도 user_id가져오지 못하고 계속 첫번째 조건만 반복되는것 같아요~ json이 문제인지.. 머가 문제인지 도통 모르겠네요~

    • 생존본능 2011.07.23 17:05 신고

      안녕하세요 생존본능입니다. json.php 에서 object를 제대로 읽지 못하는 현상을 확인하여 이에 대응하는 내용 추가하였습니다.
      그 내용은 http://mbseo.wo.tc/30 여기서 확인가능합니다. 바로대응드리지 못한점 죄송합니다.

  7. 2011.05.29 20:01

    비밀댓글입니다

  8. name 2011.07.11 17:17 신고

    [입문] 좋은정보 감사합니다 질문은 원래 hello + ID 에서 ID는 숫자로 나오는게 맞나요? 이름을 출력하려면 어떻게 하나요?

    • 생존본능 2011.07.14 16:18 신고

      $me = $facebook->api('/me'); 에서 가져온 $me에서
      $me['name']을 호출하시면 됩니다.^^

  9. 떠더리 2012.07.04 21:08 신고

    질문이요~ ^^
    페이지 탭으로 앱을 만든 다음에요..
    인증을 받고..
    다시 페이지탭으로 넘어와야 되는경우에는..
    페이지 탭의 주소를 너어주어야 되는건가요?

    그런데 페이지탭의 주소는 어찌 아나요?

+ Recent posts