일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드
- twitter API
- TripAdvisor
- 알라뿌자
- 유튜브
- mncast
- 윈도우 7
- 께랄라
- 코친
- 트립어드바이저
- 유사석유 불법거래업체
- 채팅
- torrent
- 인도
- PHP
- 트위터
- Windows 7
- 배낭여행
- Login
- MintUTIL
- 북한
- 델리
- 토렌트
- 일드
- 주유소
- 그누보드
- 노무현 대통령
- 유사석유
- 구글
- 영화
- Today
- Total
MintState WebLog
twitter API for PHP 본문
프로그램 적으로 본다면 머 별거 없다고 생각하지만 twitter의 아이디어를 보면 정말 대단합니다.
간단한 글을 통해 모든 사람들과 팔로윙(Following,Follower)을통해 연결 된다는 생각 정말 간단하면서도 독창적입니다.
또한 거의 모든기능(회원가입 제외)을 API로 제공하고 있습니다.
http://twtkr.com/ 을 봐도 알 수 있습니다. twtkr.com은 twitter가 영어라서 한글로 번역해놓은 사이트 입니다. twitter 사이트랑 똑 같습니다. 몇가지 기능을 더 제공하고 있지만 똑 같다고 보면 됩니다. 모두 twitter에서 제공하는 API를 사용하여 서비스 됩니다.
그럼 나의 사이트에서도 twitter API를 사용하고 싶어지죠...
그런 분들은 위하여... 초보자 분들입니다. 저 또한 초보자 이기 때문에 좀더 쉽고 필요한 기능만 설명하고자 합니다.
twtkr 같은 사이트를 만들려고 사용하지 않는 다면 기능은 거의 정해져 있습니다.
우선 Tistory2Tweet 와 같이 내가 또는 회원이 글을 쓰면 twitter에 같이 포스팅이 되는 기능.
내 Following 가져오기 Following된 글들 가져오기등...
그럼 이런 서비스를 위해서는 무엇이 필요할까요??
지금부터 언급하는 내용은 PHP 기준입니다. 머 다른 언어도 거의 비슷합니다.
우선 PHP가 되야 하겠고 버전은 5.2 이상 권장입니다. 또한 CURL 이 되어야 합니다. phpinfo() 를 이용하여 자신의 환경을 살펴 보시길 바람니다.
Twitter.com에서는 API Doc을 제공합니다.
http://dev.twitter.com/
http://dev.twitter.com/pages/oauth_libraries#php
http://dev.twitter.com/pages/sign_in_with_twitter - buttons
위 링크를 따라가서 가볍게 읽어 주세요. 그림도 있으니 간략하게만 이해해 주세요. 저도 영어가 딸려서 ㅡㅡㅋ
API을 이용을 편하게 하기 위해 많은 툴(Tools)들이 있습니다. 몇가지를 소개하면 아래와 같습니다.
http://github.com/abraham/twitteroauth
http://github.com/abraham/php-twitter
http://jdp.github.com/twitterlibphp
http://github.com/jmathai/twitter-async
http://code.google.com/p/oauth-php/
http://code.google.com/p/php-twitter/
http://twitter.slawcup.com/twitter.class.phps
이중에서 제가 쓸 툴은 twitter에서도 소개되고 있는 twitteroauth - @abraham's Twitter OAuth library for PHP 입니다.
사이트에서 파일을 받으시면 됩니다. 파일중 필요한것은 아래 파일 정도 입니다.
twitteroauth/OAuth.php
twitteroauth/twitteroauth.php
callback.php
clearsessions.php
config.php
redirect.php
정확히 목표를 정해 놓고 가는 것이 좋겠죠.
목표는 회원제 사이트에서 자신이 쓴글을 twitter에 같이 포스팅 하는 것입니다. Tistory2Twee 같은 기능을 구현 하고자 합니다.
$$ 그럼 처음으로 할일은 twitter에 서비스에 이용될 API KEY를 얻는 것입니다.
twitter에 가입은 필수 이고. http://twitter.com/apps/new 를 열어서 각 필드를 적당히 채워 줍니다.
Callback URL은 정확하게 적어 주세요.
Save를 크릭하면 사용할 API가 생성 됩니다.
https://twitter.com/apps 를 보면 등록된 모든 API를 볼 수 있습니다.
해당 API(Application)을 클릭하면 API의 상세 항목을 볼 수 있습니다.
상세 항목중에서 필요한것은 Consumer Key 와 Consumer secret 입니다. 또한 API의 Callback URL도 필요합니다.
$$ 소스를 설명하기 앞서 간략하게 어떻게 동작 하는지 설명 하겠습니다.
각각의 회원이 글을 쓰면 각 회원 twitter로 포스팅하기 위해서는 각 회원의 twitter로그인 정보가 있어야 합니다. Tistory2Twee 에서도 한번은 twitter에 로그인을 해주어야 하죠..
twitteroauth를 이용하여 twitter에 로그인시 twitter 회원별로 정해진 oauth_token, oauth_token_secret 값을 알아와 디비에 저장을 합니다. 이 값만 있으면 다음부터는 twitter에 로그인 할 필요가 없습니다. 이 값을 이용하여 자동으로 로그인하는 효과를 볼 수 있는 거죠.
그럼 회원이 어떠한 글을 올리면 내부적 프로그램을 이용하여 자동으로 로그인을 하고 그 회원의 twitter에 글을 올리는 것입니다.
$$ 그럼 먼저 twitteroauth의 환경 설정을 합니다.
config.php 파일을 열어서 CONSUMER_KEY, CONSUMER_SECRET, OAUTH_CALLBACK 을 정확하게 채워 줍니다.
$$ 회원별 oauth_token, oauth_token_secret 값을 알아 와야 겠죠.
회원이 링크하는 버튼을 하나 만들어서 팝업으로 redirect.php 을 띄웁니다. 800x400정도면 되겠죠.
그럼 twitter에 로그인 하라는 폼이 나올것입니다. 이미 로그인 되어 있으면 아래와 같은 화면이 나타 납니다.
이 정보를 이용해서 oauth_token, oauth_token_secret 을 알아 내면 됩니다.
callback.php 파일을 살짝 바꿔주면 됩니다.
/**
* @file
* Take the user when they return from Twitter. Get access tokens.
* Verify credentials and redirect to based on response from Twitter.
*/
/* Start session and load lib */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');
/* If the oauth_token is old redirect to the connect page. */
if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {
$_SESSION['oauth_status'] = 'oldtoken';
header('Location: ./clearsessions.php');
}
/* Create TwitteroAuth object with app key/secret and token key/secret from default phase */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
/* Request access tokens from twitter */
$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);
/* Save the access tokens. Normally these would be saved in a database for future use. */
$_SESSION['access_token'] = $access_token;
/* Remove no longer needed request tokens */
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);
if (200 == $connection->http_code) {
/* The user has been verified and the access tokens can be saved for future use */
$_SESSION['status'] = 'verified';
// 이부분에 디비 작업을 하시면됩니다.
$up = mysql_query("update `member_db` set
oauth_token='$access_token[oauth_token]',
oauth_token='$access_token[oauth_token_secret]',
user_id='$access_token[user_id]',
screen_name='$access_token[screen_name]'
where user='$user' ");
echo "<script>window.close()</script>";
//echo "<a href='clearsessions.php'>Clear Sessions</a>";
//header('Location: ./index.php');
} else {
/* Save HTTP status for error dialog on connnect page.*/
header('Location: ./clearsessions.php');
}
?>
$$ 그럼 oauth_token 이 등록된 회원이 글을 쓰면 Twitter에 글을 날려야 겠죠.
twitteroauth 에 동봉된 test.php에 모든것이 있습니다.
글을 등록하는 로직 부분이 아래 부분을 추가 하면 됩니다. (예시 입니다. 응용하셔야 합니다.)
// 회원 디비에서 token값 가져오기
$member = mysql_fetch_array(mysql_query("select * from `member_db` where user='$user' "));
// 포스팅할 글 줄이기
// twitter는 글자수가 140자로 제한 되어 있으므로 포스팅할 글자를 잘라 주어야 합니다.
// 링크주소까지 넣을 려면 약 100자 안팎으로 줄여야 겠죠.
// 링크주소는 http://bit.ly 등으로 줄이시면 됩니다. 이또한 API를 제공합니다.
$msg = str_cut($comment)." ".$short_url;
/* Start session and load lib */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');
// token을 이용하여 twitter에 접근합니다.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $member['oauth_token'], $member['oauth_token_secret']);
$connection->post('statuses/update', array('status' => $msg));
?>
알고 보면 간단 하죠.
// 자신의 글 가져오기
$connection->get('statuses/home_timeline');
// 친구(following)글 가져오기
$connection->get('statuses/friends_timeline');
// follow user id 가져오기
$connection->get('friends/ids');
test.php파일에 보시면 여러가지 예제가 있습니다.
하나 하나씩 테스트 해보시면 될 것 같네요.
http://dev.twitter.com/doc/ 의 좌측 메뉴에 적용할 수 있는 모든 목록이 있습니다.
ps. twitter callback은 xml과 json 파일 모두 지원합니다. 경우에 따라서는 atom, rss도 지원합니다. 사용하기 편한 것으로 사용하세요. 기본으로 받을 형식은twitteroauth/twitteroauth.php 파일에서 설정하시면됩니다.
ps. twitter API는 Request가 제한적입니다. Request를 늘려주기 위해서 Request whitelisting 에 등록 해주면 됩니다.