tech.log

memo.txt

PHP+CodebirdでAccess tokenとAccess token secretを取得する

GETでconsumer_keyとconsumer_secretを投げるとTwitterの認証ページに飛ばして認証後トークンを表示してくれるやつ。

<?php

require_once('codebird.php');

session_start();

if(isset($_GET['key']) && isset($_GET['secret'])){
  $consumer_key = $_GET['key'];
  $_SESSION['key'] = $consumer_key;
  $consumer_secret = $_GET['secret'];
  $_SESSION['secret'] = $consumer_secret;
}
else if(isset($_SESSION['key']) && isset($_SESSION['secret'])){
  $consumer_key = $_SESSION['key'];
  $consumer_secret = $_SESSION['secret'];
}

Codebird\Codebird::setConsumerKey($consumer_key,$consumer_secret);
$cb = Codebird\Codebird::getInstance();

if(!isset($_GET['oauth_verifier'])){

  $reply = $cb->oauth_requestToken(array(
    'oauth_callback' => 'http://0q0.biz/oauth/php/oauth.php'
  ));

  $cb->setToken($reply->oauth_token,$reply->oauth_token_secret);
  $_SESSION['oauth_token'] = $reply->oauth_token;
  $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;

  $auth_url = $cb->oauth_authorize();
  header('Location: '.$auth_url);
  die();
}elseif(!isset($_SESSION['oauth_verified'])){

  $cb->setToken($_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
  $reply = $cb->oauth_accessToken(array(
    'oauth_verifier' => $_GET['oauth_verifier']
  ));

  $_SESSION['oauth_token'] = $reply->oauth_token;
  $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;
  $cb->setToken($_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
  $_SESSION['oauth_verified'] = true;

}
echo "oauth_verified = ".$_SESSION['oauth_verified']."<br>";
echo "Access Token : ".$_SESSION['oauth_token']."<br>";
echo "Access Token Secret : ".$_SESSION['oauth_token_secret']."<br>";

?>

Codebirdのサンプルを参考に、セッションに入れたり出したりしたりしなかったりするところをちょこちょこ書き換えてみた。
GETで投げるだけだけど、ちょっと使いやすくなるかなと思って専用のページを作ってみました。
TwitterOAuthHelper