트위처 API가 1.1로 업그레이드 되면서 타임라인의 글을 불러오는 부분에도 문제가 생겼습니다.

기존
http://api.twitter.com/1/statuses/user_timeline/username.json
만으로 쉽게 사용자의 타임라인 글이나 작성일등 정보들을 쉽게 가져올 수 있었습니다.

그런데 이런 부분들이 무분별하게 남용되고 있는것이 문제가 되는지  어플리케이션을 통해 승인을 받아야만 사용자 글에 대한 정보를 가져올 수 있게 됐습니다.

위에 링크를 타고가면 다음과 같은 에러를 만날 수 있습니다.
{"errors": [{"message": "The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", "code": 68}]} 1.1로 바뀐 새로운 API 문서를 참고하라는 내용입니다. 참고하면 뭔가 해결될 거 같지만... 친절하게 코딩을 어떻게 해야 하는지까지 알려주지는 않습니다;; 다음은 해당 리스트를 불러오는 코딩입니다.

<?php
require_once("twitteroauth/twitteroauth/twitteroauth.php"); 

$twitteruser = "twitterusername"; // 트위터 아이디
$notweets = 30; // 불러올 타임라인 글의 개수
// 어플리케이션 생성 후 발급받는 키 값
$consumerkey = "12345";
$consumersecret = "123456789";
$accesstoken = "123456789";
$accesstokensecret = "12345";

function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) {
  $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
  return $connection;
}
  
$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret);

$tweets = $connection----->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$twitteruser."&count=".$notweets);
 
echo json_encode($tweets);
?>

위 코드는 다음 블로그를 참고했습니다.
http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/
위 문제에 대한 좀 더 자세한 내용이 영어로 나와있습니다.
물론 해석을 해드리고 싶지만...ㅠㅠ

Posted by 레들러 트랙백 0 : 댓글 0

댓글을 달아 주세요


2013년 5월 트위터 API가 1.1로 업데이트 됐습니다.
아래는 업데이트 관련 문서 링크입니다.
해석을 해드리고 싶지만...
https://dev.twitter.com/docs/api/1.1/overview

1.1로 업데이트 되면서 트위터 로그인 및 어플리케이션 승인 요청에 문제가 생겼습니다.
에러도 없이 기존처럼 잘 되는것처럼 보이지만...
로그인도 되어있지 않고 트위터 아이디도 받아오지 못합니다...

원인은 1.1로 업데이트 되면서 API ROOT URL이 변경됐기 때문입니다.
간단한 수정으로 해당 문제를 해결할 수 있습니다.






twitteroauth.php 파일에서

/* Set up the API root URL. */
// public $host = "https://api.twitter.com/1/";
public $host = "https://api.twitter.com/1.1/";

1을 1.1로 수정하면 됩니다 
참 쉽죠;;

$connection = new TwitterOAuth(...);
$connection->host = "https://api.twitter.com/1.1/";

또는 위와 같이 트위터 클래스를 선언할 때 호스트 주소를 변경해도 똑같이 적용됩니다.


Posted by 레들러 트랙백 0 : 댓글 0

댓글을 달아 주세요