본문 바로가기

Programming/etc

facebook : facebook 보안서버가 아닌 웹서버에서 php sdk로 canvas app 구현하기

------ 이 포스팅은 자세한 canvas app 구현에 대한 코딩을 안내하지 않습니다.

결과물먼저 알려드리자면

비로그인 facebook 사용자가 url을 직접 입력하여 앱에 접근을 하게 되면

페이스북에서 로그인 페이지로 redirect 를 하게 됩니다.

비로그인 사용자가 로그인을 하게 되면 앱에 대한 접근 권한 승인 여부를 나타내는 페이지가 보이게 됩니다.

앱에 대해 승인을 하게 되면 사용자는 앱의 화면을 보게 되고 앱을 플레이 한 후에

결과물에 대하여 자신의 담벼락(wall, feed) 에 앱이 원하는 data를 올리게 됩니다.


이 결과물을 나오게 하기 위해 제가 작업한 환경은 아래와 같습니다.

windows server(No SSL, 도메인있음) / APMSetup7(apache2.2-php5.2만 의미있음)


이러한 환경 아래에서 github 이나 여러 돌아다니는 소스들을 취합하여 tutorial 과 같은 source를 만들었습니다.

그러다보니 서로 다른 환경에서 작업이 일어난 source들을 정상작동하게 하려니 여러 문제점이 있었습니다.


우선 SSL 문제를 회피하기 위해서는 login process 가 있는 php 파일 상단에

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;

를 작성하여 줍니다.


그리고 보안인증서 fb_ca_chain_bundle.crt 를 facebook.php(sdk) 파일이 있는 같은 폴더에 넣어줍니다.


흠.... 끝입니다  -_-;;


이거때문에 대략 순수 10시간은 삽질한 듯하네요...

첨 만져보는 php였기도하고 구현에 집중하다보니 logging처리없이 감에만 의존,

문제 요지가 보이는 라인 뒤에 파일생성명령어를 통해 input하면서 에러를 잡다보니 죽는 줄 알았네요 ㅋㅋ

사실 이 포스팅이 맞는지도 모르겠네요. 구현중에 막힐적마다 stackoverflow 에 의존했는데 맞길 바랄뿐입니다;;

추후에 다시 관련해서 막히는 일이 없길 ㅠㅠㅠ


참, facebook php sdk 에서 exception 처리를 지원하더군요 -_-;; 것두 모르고 삽질만 엄청 했었네요.

적절하게 try catch 문을 작성하면서 작업한다면 이 글을 보시는 여러분은 아마 로직에만 집중할 수 있을거에요ㅠㅠ