트위터 어플리케이션 만들기 준비작업을 지난 시간에 마무리 했습니다.
이제 PHP 코드를 작성하면 되는데요.
보통 제 블로그 오시는 분들은 대부분 플래시를 하시는 분이고 서버사이드 언어를 잘 모르는 분들이 많을 거라고 생각합니다.
사실 저도 미대를 졸업하고 개발자가 된거라 PHP나 C#이나 JAVA나 이런거 실무나와서 책보고 공부한게 전부라 덜덜덜 하면서 보곤 했는데 막상 다루고 나면 별것 없고 특히나 트위터 연동같은건 너무 많은 사람들이 글을 써 올려주시는 바람에 소스만 읽고 분석할 줄 아는 능력만 있다면 너무 걱정하지 마세요.
(그런 능력이 없으신 분들은 어떻게 하냐고 물으실까봐 하는 말입니다만 그렇다 해도 너무 걱정하지 마세요)
너무 걱정할 필요가 없는 이유 하나는 지난 시간 다운로드 받았던 코드 있지요? 거기에 다 있습니다.
github.com에서 받아온 소스 있잖아요. 인증하는 샘플소스.
그걸 풀어놨던 곳도 기억하시나요? 일단 그 위치로 가보시죠.
거기가 보시면 config.php 파일 있습니다.

그 파일을 열어보도록 하지요.
[code php]
<?php
/**
* @file
* A single location to store configuration.
*/
define('CONSUMER_KEY', 'xxxxxxxxxxxxxxxxxxxxxx');
define('CONSUMER_SECRET', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('OAUTH_CALLBACK', 'http://127.0.0.1/twitterOauth/callback.php');
[/code]
뭐 이런식으로 되어있을겁니다. CONSUMER_KEY가 뭔가요? CONSUMER_SECRET이 뭔가요? OAUTH_CALLBACK은 또 뭐죠? 하실거에요. 물론 잘 알고 계시는 분들도 계시겠지만 모르는 분 위주로 설명할게요.
consumer key라는것은 간단하게 이야기 하면 어플리케이션 키입니다. 어플을 트위터에서 발급해주는 인증키를 기준으로 찾아갈 수 있게 해 놓은거죠. secret은 같은 맥락으로 인증된 키만 갖고는 사용자 정보를 전달하기엔 보안상 문제가 될 수 있으니 secret 키를 둬서 매칭되는지 확인한 후에 접근 가능하도록 해놓습니다. 거기에 하나 더 필요한 것은 callback URL인데요. 어플리케이션을 등록할 당시에 지정한 callBack URL과 리다이렉션 URL이 다르면 인증 절차가 invalid되서 진행할 수 없도록 막아놓고 있습니다.
결국 관리자 외에는 어플리케이션을 컨트롤 할 수 없도록 보안장치를 만들어놓았다는 거죠.
자신의 cunsumer key와 secret키를 보고 싶다면 지난시간에 어플리케이션을 등록하고 나면 http://dev.twitter.com/apps 에 가보면 자신이 등록한 어플리케이션을 확인할 수 있다고 이야기 했는데요. 여기서 consumer key와 secret을 확인할 수 있습니다.

그럼 config.php에 적절하게 입력해줍니다. 그런데 OAUTH_CALLBACK에 뭘 넣어야 할지 모르겠다는 분들 계실텐데요. 아까전에도 말씀 드렸다시피 어플리케이션 등록할 당시에 입력했던 Callback URL을 입력해 줘야합니다. 틀리면 인증절차가 무효되서 User Token을 얻어올 수 없어요.
지난 시간 말씀드렸듯 저는 http://127.0.0.1/twitterOauth/callback.php 이라고 넣어놨습니다.
물론 저 주소를 넣었을때 확인할 수 있는 페이지도 있어야겠지요?
config.php파일을 수정했으면 아파치를 기동하고 http://127.0.0.1/twitterOauth 에 접속합니다.

그런데 좀 어이없는게 왜 index.php파일이 열리는게 아니라 connect.php 파일이 열리는 건지 당최이해할 수가 없군요.. 라고 말하기 전에 일단 index.php 파일을 열어서 확인해보도록 합니다.
[code php]
<?php
/**
* @file
* User has successfully authenticated with Twitter. Access tokens saved to session and DB.
*/
/* Load required lib files. */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');
/* If access tokens are not available redirect to connect page. */
if (empty($_SESSION['access_token']) ||
empty($_SESSION['access_token']['oauth_token']) ||
empty($_SESSION['access_token']['oauth_token_secret']))
{
header('Location: ./clearsessions.php');
}
[/code]
이라고 코드가 짜여져 있을건데요. $_SESSION내에 access_token, access_token 내의 oauth_token, oauth_token_secret 값이 있는지 확인해보고 없으면 clearsessions.php로 이동시킵니다.
clearsessions.php는 걸려있는 세션을 지우고 connect.php로 이동시키게 되지요.
[code php]
<?php
/**
* @file
* Clears PHP sessions and redirects to the connect page.
*/
/* Load and clear sessions */
session_start();
session_destroy();
/* Redirect to page with the connect to Twitter option. */
header('Location: ./connect.php');
[/code]
이런 이유로 connect.php가 화면에 보여지게 됩니다.
그렇다면 access_token은 어디서 얻을 수 있을까요?
일단 사용자 로그인을 해야합니다. 화면에 있는 "Sign in with Twitter" 버튼을 클릭합니다.

"Sign in with Twitter" 버튼을 클릭하게 되면 내부적으로 redirect.php 파일에 접근해서 해당 어플리케이션이 접근을 해도 괜찮은 인증된 어플리케이션인지 확인을 하게 됩니다. 인증된 어플리케이션임을 확인하게 되면 Twitter에서는 사용자에게 로그인 창을 띄우고 만약 로그인을 하고 있었다면 해당 어플리케이션과 자신의 계정을 연결할 것인지 묻는 창이 나오게 됩니다.(물론 로그인 창에서 로그인을 하면 자동으로 이 페이지가 나옵니다.)

이때 "Allow"를 선택하게 되면 리다이렉트 주소를 호출하여 접근하는데 그 주소는 이 어플리케이션을 생성할 당시에 http://127.0.0.1/twitterOauth/callback.php 이라고 등록했었지요. 그 페이지로 이동하게 됩니다.
그리고 아래와 같은 화면이 등장하면 이제 글쓰기 준비는 완료 되었습니다.

오늘은 여기까지 하고 다음시간에 위와같은 절차로 가져온 사용자 토큰을 갖고 글쓰기를 만들어 보도록 하겠습니다.
p.s 제가 보기엔 xml 형식으로 받아오는 것도 좋긴 합니다만 jason 으로 받는게 더 편한거 같더라구요.
xml 방식으로 받아오고 싶기도 한데... 어떤 주소를 호출해야할지 못찾겠어요; 누군가 도와주세요.
0 개의 댓글:
댓글 쓰기