Child pages
  • facebook 앱에 알림 기능을 구현하는 방법
Skip to end of metadata
Go to start of metadata

http://www.slipp.net은 facebook, twitter, google의 앱으로 등록되어 운영하고 있다. 따라서 모든 계정을 자체적으로 관리하는 것이 아니라  facebook, twitter, google 서비스에 위임하고 있다. 물론 최초 접근하고 앱에 접근가능하도록 승인하면 기본적인 access_token과 profile url 등은 slilpp.net 자체적으로 관리를 한다. 

서비스를 오픈한 후에 같이 일하는 동료들과 서비스 관련해서 이야기하다가 서비스 활성화를 위해 먼저 추가했으면 좋겠다고 생각하는 기능들에 대한 의견을 받았다. 그 중에 하나가 알림 기능을 강화했으면 좋겠다는 것이다. 서비스 자체에 알림 기능이 있어도 좋겠지만 이 부분에 대한 작업은 크기 때문에 외부 SNS를 활용하는 것도 좋겠다는 의견이었다.

그래서 먼저 찾기 시작한 것이 slipp.net에 댓글을 다는 경우 facebook에 알림을 할 수 있을까에 대한 검토 작업을 시작했다. 오늘은 그 과정과 내용을 공유하려한다. 먼저 첫번째로 파악할 부분은 Facebook의 Notification API에 부분이다.

POST /{recipient_userid}/notifications?access_token= ... &template= ... &href= ...

HttpClient API를 추가하고 Notification API 문서를 참고해 알림 API를 호출했다. 이 API를 호출하는 순간 "알림 API는 facebook 캔버스 앱에서만 사용할 수 있다."는 에러 메시지를 받았다. 이게 무슨 황당한 소리란 말인가? 그렇다면 slipp.net과 같이 별도의 웹 서비스를 하는 앱은 알림 API를 사용할 수 없다는 말인가? 이 에러 문구에 좌절하고 몇 일을 포기한 채 지냈다. 2,3일 정도 포기하고 지내다가 웹 서비스도 facebook 캔버스 앱으로 등록할 수 있지 않을까라는 생각을 했다. 그래서 facebook 앱 설정을 자세히 살펴봤더니 facebook 캔버스 앱을 등록하는 부분이 있다.

먼저 아래와 같이 "Facebook 캔버스 앱" 설정에 다음과 같이 입력하고 캔버스 앱 등록을 시도했다.

위와 같이 캔버스 URL을 등록하고 변경 내용을 저장했더니 "캔버스 URL(HTTPS 보안)" 항목에도 값을 입력하란다. 근데 https 기반이어야 한단다. 이게 무슨 소리? 로컬 개발하는데도 ssl을 설정하고 개발해야 된단 말인가? 한참을 삽질하고 인터넷 검색했더니 Sandvox Mode를 "활성화됨"으로 변경하면 "캔버스 URL(HTTPS 보안)"에 값을 입력하지 않아도 facebook 캔버스 앱으로 등록할 수 있단다.

위와 같이 Sandbox Mode를 "활성화됨"으로 설정하고 저장했더니 저장이 된다. 뭔가 한단계 더 진행된 느낌이 든다. 근데 어딘가 모르게 찜찜함이 남아 있다. facebook 캔버스 앱으로 등록해 알림 기능을 사용할 수 있게 되었지만 최종 서비스를 오픈하려면 SSL 기반으로 서비스해야 된다는 말이 되는데. 일단 이런 걱정은 뒤로하고 알림 기능을 구현하기 시작했다. 캔버스 앱으로 등록하고 이전에 작성했던 테스트 코드 실행하니 바로 성공한다. 테스트는 마무리하고 slipp.net의 댓글에 알림 기능 추가 작업을 진행했다. 댓글 중에서 facebook으로 등록한 계정에 대해서만 Facebook으로 알림을 할 수 있도록 설정했다. 개발은 순조롭게 잘 됐다. 이제 개발을 마치고 실 서비스에 적용할 단계인데 SSL을 해결할 방법이 없다. 그렇다고 그 비싼 돈을 주고 SSL을 운영할 수도 없었다. 이런 안타까운 마음을 페북에 올렸다.

위와 같이 아쉬움을 남겼더니 아래와 같이 무료로 SSL 사용하는 방법을 공유해 주었다. 

역시 고민이 있을 때 혼자 고민하지 말고 다른 사람들에게 도움을 구하면 해결 방법을 찾을 수 있다는 느낌을 받으면서  startssl 에 대한 조사헤 착수한다. 일민이형은 이미 사용하고 있다고 하니 더 확신이 들었다. 이 자리를 빌어 임재완님과 일민이형에게 감사의 말을 전한다.

startssl을 적용하려고 조사해 봤더니 인증서를 받는 단계가 생각보다 복잡하다.  그래서 이리 저리 문서를 찾았다. 찾은 결과 정말 step by step으로 잘 작성되어 있는 SSL 인증서 무료로 받아 설치하기 문서를 발견했다. 이 문서를 통해 전체적인 과정을 파악하기 인증서 받기에 도전해 한번에 성공했다. 웹 서버에 인증서 적용도  SSL 인증서 무료로 받아 설치하기 문서 활용해 한번에 성공했다. 지금까지 무엇인가 최초 설치하면서 이렇게 한번에 성공한 적은 없는 듯하다. 저녁에 퇴근하고 2시간 정도 투자해 인증서 다운과 SSL 설정을 모두 마쳤다. 긴장되는 마음으로 slipp.net을 Facebook 캔버스 앱으로 등록했다. 가볍게 성공

마지막 테스트만 남았다. 나 혼자 테스트하기 힘들어 회사 출근한 후에 옆 동료와 테스트해서 Facebook 알림이 정상적으로 전달되는 것을 확인했다. 이 때의 기쁨이란 경험해보지 않으면 모를 듯하다. 현재 아래와 같이 알림이 잘 오고 있다.

알림을 추가한 후 가장 편한 사람은 바로 나 자신이다. slipp.net이 활성화하는데도 기여를 하겠지만 slipp.net에 올라오는 의견들에 관심을 가지고 항상 모니터링하고 있는 나에게 큰 도움을 주고 있다.

최초 아이디어를 주었던 옆 동료인 김현기, 무료 SSL 사용에 도움을 준 임재완, 이일민 님에게 감사 드린다.

작은 것이었지만 내가 만든 서비스에 무엇인가 새로운 기능을 추가해 나갈 때의 느낌은 다른 어떤 것보다 즐겁고 재미난 일인 듯하다. 이 작업이 나 혼자만의 힘이 아니라 아이디어를 내고 문제에 대한 해결책을 찾는데 다른 친구들의 도움을 받아 진행할 수 있었다는 것에 더 큰 기쁨을 느낀다. slipp.net이 아직 부족한 부분이 많지만 개발자들이 어떻게 하면 좀 더 쉽고, 재미있게 소통할 수 있을지를 끊임없이 고민한다면 더 좋은 서비스로 거듭날 수 있으리라 생각한다.

앞으로 twitter나 google 사용자들과 어떻게 소통해 나갈 것인지에 대해서도 고민해 봐야겠다.