Skip to content

Instantly share code, notes, and snippets.

@59naga
Created January 20, 2014 08:22
Show Gist options
  • Save 59naga/8516710 to your computer and use it in GitHub Desktop.
Save 59naga/8516710 to your computer and use it in GitHub Desktop.
twitterOauth(1.1) ライブラリ無しでユーザのタイムラインを取得するまでのコード ref: http://qiita.com/59naga/items/76b5f34450442bbc615c
<?# cgi-fcgi 5.4.17
session_start();
$consumer_key='割愛';
$consumer_secret='同上';
$cnstv=array(
'oauth_consumer_key'=>$consumer_key,
'oauth_nonce'=>md5(time()),
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_timestamp'=>(string)time(),
);
if(empty($_SESSION)){
$url='https://api.twitter.com/oauth/request_token';
$signature_base='GET&'.rawurlencode($url).'&'.rawurlencode(http_build_query($cnstv));
$signature_key=implode('&',array($consumer_secret,""));
$signature=hash_hmac('sha1',$signature_base,$signature_key,true);
$cnstv['oauth_signature']=base64_encode($signature);
$request=array();
$request_url=$url.'?'.http_build_query($cnstv);
$result=file_get_contents($request_url);
parse_str($result,$request);
$_SESSION['oauth_token']=$request['oauth_token'];
$_SESSION['oauth_secret']=$request['oauth_secret'];
$auth_url='https://api.twitter.com/oauth/authenticate?oauth_token='.$request['oauth_token'];
header('Location: '.$auth_url);
}
else if(isset($_GET['oauth_verifier'])){
$url='https://api.twitter.com/oauth/access_token';
$cnstv['oauth_token']=$_SESSION['oauth_token'];
$cnstv['oauth_verifier']=$_GET['oauth_verifier'];
$signature_base='GET&'.rawurlencode($url).'&'.rawurlencode(http_build_query($cnstv));
$signature_key=implode('&',array($consumer_secret,$_SESSION['oauth_secret']));
$signature=hash_hmac('sha1',$signature_base,$signature_key,true);
$cnstv['oauth_signature']=base64_encode($signature);
$access=array();
$access_url=$url.'?'.http_build_query($cnstv);
$result=file_get_contents($access_url);
parse_str($result,$access);
$_SESSION=$access;
if(empty($_SESSION['oauth_token_secret'])){
header("Content-Type: text/plain");
echo "Failure authorize";
}
}
if(isset($_SESSION['oauth_token_secret'])){
$url='https://api.twitter.com/1.1/statuses/home_timeline.json';
$cnstv['oauth_token']=$_SESSION['oauth_token'];
$signature_base='GET&'.rawurlencode($url).'&'.rawurlencode(http_build_query($cnstv));
$signature_key=implode('&',array($consumer_secret,$_SESSION['oauth_token_secret']));
$signature=hash_hmac('sha1',$signature_base,$signature_key,true);
$cnstv['oauth_signature']=base64_encode($signature);
$status=array();
$status_url=$url.'?'.http_build_query($cnstv);
$result=file_get_contents($status_url);
header("Content-Type:text/plain;charset=utf8");
echo "Hello, ",$_SESSION['screen_name']."\n";
$timeline=json_decode($result);
for($i=0,$length=count($timeline);$i<$length;++$i){
$tweet=$timeline[$i];
echo $tweet->user->screen_name,' ',$tweet->text,"\n";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment