Created
November 9, 2009 01:07
-
-
Save nojimage/229599 to your computer and use it in GitHub Desktop.
HTTP_OAuth sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// require HTTP_OAuth | |
require_once('HTTP/OAuth/Consumer.php'); | |
/* Twitterの認証情報を格納するためにセッションを開始 */ | |
session_start(); | |
/* Consumer key from twitter */ | |
$consumer_key = '{ここにConsumer keyを貼り付け}'; | |
/* Consumer Secret from twitter */ | |
$consumer_secret = '{ここにConsumer Secretを貼り付け}'; | |
/* twitterからの Callback url */ | |
$callback_url = 'http://{このスクリプトの設置場所}'; | |
/* Set up placeholder */ | |
$content = ''; | |
/* セッションのクリア */ | |
if ($_REQUEST['test'] === 'clear') { | |
session_destroy(); | |
session_start(); | |
} | |
try { | |
// -- init HTTP_OAuth_Consumer | |
$oauth = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret); | |
// ssl通信を可能に | |
$http_request = new HTTP_Request2(); | |
$http_request->setConfig('ssl_verify_peer', false); | |
$consumer_request = new HTTP_OAuth_Consumer_Request; | |
$consumer_request->accept($http_request); | |
$oauth->accept($consumer_request); | |
if (!empty($_REQUEST['oauth_token']) && $_SESSION['oauth_state'] === 'start') { | |
// -- Twitterから認証後に戻ってきた場合 (callback処理) | |
$_SESSION['oauth_state'] = 'returned'; | |
if (empty($_SESSION['oauth_access_token']) || empty($_SESSION['oauth_access_token_secret'])) { | |
// -- access_tokenが未取得の場合 | |
/* request tokenをセット */ | |
$oauth->setToken($_SESSION['oauth_request_token']); | |
$oauth->setTokenSecret($_SESSION['oauth_request_token_secret']); | |
/* twitterから戻ってきた oauth_verifierをセット */ | |
$oauth_verifier = $_REQUEST['oauth_verifier']; | |
/* Access token をリクエスト */ | |
$oauth->getAccessToken('https://twitter.com/oauth/access_token', $oauth_verifier); | |
/* Acces tokenを保存 (実際のアプリケーションではこれをDB等に保存しておきます。) */ | |
$_SESSION['oauth_access_token'] = $oauth->getToken(); | |
$_SESSION['oauth_access_token_secret'] = $oauth->getTokenSecret(); | |
} | |
} | |
if (!empty($_SESSION['oauth_access_token']) && !empty($_SESSION['oauth_access_token_secret'])) { | |
// -- 認証済みの場合 | |
/* Random copy */ | |
$content = 'your account should now be registered with twitter. Check here:<br />'; | |
$content .= '<a href="https://twitter.com/account/connections">https://twitter.com/account/connections</a>'; | |
/* access_tokenをセット */ | |
$oauth->setToken($_SESSION['oauth_access_token']); | |
$oauth->setTokenSecret($_SESSION['oauth_access_token_secret']); | |
/* ユーザ情報を取得するリクエストを発行. */ | |
$result = $oauth->sendRequest('https://twitter.com/account/verify_credentials.xml', array(), 'GET'); | |
// その他の例 | |
//$result = $oauth->sendRequest('https://twitter.com/statuses/update.xml', array('status' => 'Test OAuth update. #testoauth'), 'POST'); | |
//$result = $oauth->sendRequest('https://twitter.com/statuses/replies.xml', array(), 'POST'); | |
/* データを取得 */ | |
$content = $result->getBody(); | |
} else { | |
// -- 初回呼び出し時 | |
/* twitterからrequest_tokenの取得 */ | |
$oauth->getRequestToken('https://twitter.com/oauth/request_token', $callback_url); | |
/* tokenをセッションに保存 */ | |
$_SESSION['oauth_request_token'] = $oauth->getToken(); | |
$_SESSION['oauth_request_token_secret'] = $oauth->getTokenSecret(); | |
/* ステータスをstartにセット */ | |
$_SESSION['oauth_state'] = "start"; | |
/* authorization URL を取得 */ | |
$request_link = $oauth->getAuthorizeURL('https://twitter.com/oauth/authorize'); | |
/* authorization URLのリンクを作成 */ | |
$content = 'Click on the link to go to twitter to authorize your account.'; | |
$content .= '<br /><a href="'.$request_link.'">'.$request_link.'</a>'; | |
} | |
} catch (Exception $e) { | |
$content = $e->getMessage(); | |
} | |
?> | |
<html> | |
<head> | |
<title>Twitter OAuth in PHP</title> | |
</head> | |
<body> | |
<h2>Welcome to a Twitter OAuth PHP example.</h2> | |
<p>This site is a basic showcase of Twitters new OAuth authentication method. Everything is saved in sessions. If you want to start over <a href='<?php echo $_SERVER['PHP_SELF']; ?>?test=clear'>clear sessions</a>.</p> | |
<p><pre><?php print_r($content); ?><pre></p> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment