본문 바로가기

프로젝트들

페이스 룰렛(2) - 서버 개설 및 카카오톡 플러스 친구 등록

1. 카카오톡 REST API

우리가 목표하는 어플리케이션은 카카오톡 이라는 플랫폼 위에서 작동한다. 카카오톡은 이를 위해 REST API 를 제공한다.

REST API 란, 그냥 쉽게 말해서 우리가 카카오 서버에 특정 URL로 어떤 '요청' 을 하면, 카카오 서버는 해당 요청에 대한 '응답' 을 주는 방식이다.

예를 들어, http://www.naver.com/getNickname 이라는 url로 내 아이디를 담은 정보를 보내면 (이를 request 라고 한다.), http://www.naver.com 서버에서 내가 보낸 정보를 검토한 후에, 내 닉네임 정보를 돌려준다. (이를 response 라고 한다.)

아무튼 핵심은,

  • 특정 URL 을 통해서 어떤 함수 요청과 정보를 넘길 수 있다는 것.
  • 요청하는 서버에서 다 알아서 해주기 때문에, 안에서 어떻게 작동해서 우리에게 정보를 주는지 알 필요가 없다는 것.

그렇다. 우리는 카카오에서 제공해주는 API가 어떻게 작동하는지 몰라도 된다. 그냥 어떻게 사용하는지, 그리고 어떤 값을 보내고 어떤 값을 받는지만 확인하면 된다.

그렇다면, 우리는 이제 카카오 API를 이용해 카카오 서버에 요청을 보내야 하는데, 이 요청을 보내고 받기 위해 우리의 서버가 필요하다.

그래서 첫 번째로 해야할 일은 우리의 서버를 만드는 것이다.

2. Node.js 를 이용한 로컬 서버 개설

서버를 개설하는 일은 Node.js 를 이용하면 매우 쉽다. 사실 Node.js 를 한 번이라도 사용해본 사람이 이 글을 읽고 있으리라 생각하지만, 그래도 잘 모르는 사람들을 위해 잠깐 설명하겠다.

Node.js 는 프로그래밍 javascript 라는 프로그래밍 언어를 기반한 소프트웨어이고, 그냥 쉽게말하면 프로그래밍을 하기위해 만들어진 툴이다. 우리는 프로그래밍을 해야하므로 이를 쓰는 것이고, Python 과 더불어 최근 가장 강력하고 인기있는 툴이므로, 좀 더 관심있는 사람이라면 꼭 접해보길 바란다. 여기서 뭔가 어렵다고 느낀다면, 생활코딩의 'Node.js' 수업을 듣고오기를 추천한다.

여기서는, 이 글을 보고있는 독자가 Node.js 및 express 를 이미 설치하고, 어느 정도 기본설정을 할 줄 안다고 가정하겠다. 사실 모르고 읽어도 어려움은 없을 것 같지만, 이는 그냥 내 생각이고, 읽다가 어려워서 막히면, 위에서 링크해놓은 생활코딩 강의를 먼저 듣고 오면 된다.

먼저 기본 서버를 개설하는 코드를 작성하자.

var express = require('express');
var app = express();

app.listen(8080, function() {
    console.log("server is running...");
});

이제 로컬에서 이를 실행하면 가장 기본적인 서버로 작동할 것이다.

server is running...

이제 다음에 해야할 일은, 우리의 앱을 카카오톡 어플리케이션으로 등록하는 것이다.

3. 카카오톡 플러스친구 등록

우리가 쓰려는 서비스는, 카카오톡 플러스 친구이다. 따라서 해당 서비스 홈페이지로 가보자. https://center-pf.kakao.com/login

관리자로 로그인을 하면 다음과 같은 화면이 뜰 것이다.

우리는 새 플러스 친구를 만들어야 하므로, 우측에 '새 플러스 친구 만들기' 버튼을 누르자. 그럼 다음과 같은 화면이 뜬다.

위와 같이 적당히 필요한 부분들을 입력해주고, 저장하자.

그러면 이제 플러스친구 관리자센터 대시보드 화면으로 넘어가는데, 왼쪽 메뉴에서 '스마트 채팅' 세션을 찾아서 클릭해보자. 그러면 다음과 같은 화면이 뜬다.

여기서 우리가 사용할 서비스는 우측의 'API형' 이다. 선택하고 설정하기 버튼을 누른다.

그러면 위와 같은 화면이 뜬다. 필요한 부분을 적당히 입력해주는데, 하나 막히는 부분이 있다. 바로 '앱 URL' 부분이다. 카카오톡 플러스친구에 우리의 앱을 등록하려면, 이 URL 을 통해 등록해야 한다. 즉, 카카오톡 서버에서 제공해주는 API를 사용하기 위해 카카오톡 서버에 우리의 서버를 등록하는 것이다.

그런데 문제가 있다. 우리가 위에서 node.js로 짠 서버는 우리의 local 에서만 돌아가고 있다. 한 마디로, 외부에서는 접근할 수 없고, 그냥 내 컴퓨터에서만 존재하는 서버인 것이다. 그래서 우리의 서버가 내 컴퓨터에만 존재하는 것이 아닌, 인터넷을 통해 접속 가능하도록 만들어 줘야한다.

4. ngrok 으로 local 서버 개방하기

ngrok 이라는 소프트웨어는 이를 가능하게 해준다. 우리의 서버를 ngrok 이라는 회사의 서버에 등록하고, 우리의 서버로 들어오는 사람은 이 ngrok 서버를 경유해서 들어오는 방식인데, 각설하고 그냥 ngrok 쓰면 이제 내 컴퓨터가 외부에서도 들어올 수 있도록 해준다.

아래 글에서 굉장히 친절하게 설명이 되어있다. 매우매우 쉽고 간결하고, 5분 정도면 금방 셋팅이 된다. (진짜 편하다... ) http://victorydntmd.tistory.com/227

5. 다시 카카오톡 서비스에 등록하기

ngrok 설치하여 실행하였으면, 다시 카카오톡 플러스친구에 등록하는 과정으로 돌아오자. 카카오에서는 우리의 애플리케이션과 연동되었는지 확인하기 위해 'API 테스트' 라는 걸 하는데, 이를 위해 우리의 소스코드를 다음과 같이 수정해주자.

var express = require('express');
var app = express();

app.get('/keyboard', function(req, res) {
    var keySetting = {
        "type": "buttons",
        "buttons": ["선택 1", "선택 2", "선택 3"]
    };
    res.send(JSON.stringify(keySetting));
});

app.listen(8080, function() {
    console.log("server is running...");
});

이제 ngrok에서 제공해주는 공용 ip를 등록하면 된다. 그리고 'API 테스트' 버튼을 누르면 다음과 같이 OK가 뜬다.

자 이제 등록과정이 마무리 되었다. 이제 우리의 서비스를 실행시키자.

이제 카카오톡으로 우리의 어플리케이션을 검색하면 나올 것 같지만, 그 전에 하나 더 설정해줘야 하는 부분이 있다. 왼쪽 메뉴 중 관리 - 상세설정 세션에 들어가면, 공개 설정이 OFF 되어있는데, 이를 ON으로 바꿔주고 확인을 누르자.

이까지 하고, 5분 정도 기다린 뒤, 카카오톡으로 아이디를 검색하면 다음과 같이 뜰 것이다.

다음에는, 이제 본격적으로 우리의 서비스를 이 어플리케이션에 얹는 과정을 차차 진행할 것이다.