動かざることバグの如し

3分経てば忘れそうなことをメモします

新・loginpack


いつものやつ少しだけ改良(?)した

login.php

<?php
session_start();
require_once("./lib/twitteroauth.php");
require_once("./lib/setting.php");

//セッションのアクセストークンのチェック
if( !isset( $_SESSION['oauthToken'] ) ){
	//OAuthオブジェクト生成
	$oOauth = new TwitterOAuth( $consumer_key, $consumer_secret );
	//callback url を指定して request tokenを取得
	$oOauthToken = $oOauth->getRequestToken( $callBackUrl );
	//セッション格納
	$_SESSION[ 'requestToken' ] = $sToken = $oOauthToken[ 'oauth_token' ];
	$_SESSION[ 'requestTokenSecret' ] = $oOauthToken[ 'oauth_token_secret' ];
	//Authorize url を取得
	$sUrl = $oOauth->getAuthorizeURL( $sToken );
	
	echo '<a href="' . $sUrl . '">ログイン</a>';
}else{
	$userId = $_SESSION['userId'];
	$screenName = $_SESSION['screenName'];
	$access_token = $_SESSION['oauthToken'];
	$access_token_secret = $_SESSION['oauthTokenSecret'];
	$to = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
	echo 'ユーザーID:' . $userId . '<br />';
	echo 'スクリーンネーム:' . $screenName . '<br />';
	echo '<a href="./logout.php">ログアウト</a>';
}
?>

logout.php

<?php
session_start();
require_once("./lib/twitteroauth.php");
//require_once("./lib/setting.php");

//URLパラメータからoauth_verifierを取得
if(isset($_GET['oauth_verifier']) && $_GET['oauth_verifier'] != ''){
	$sVerifier = $_GET['oauth_verifier'];
}else{
	echo 'oauth_verifier error';
	exit;
}

//リクエストトークンでOAuthオブジェクト生成
$oOauth = new TwitterOAuth($consumer_key,$consumer_secret,$_SESSION['requestToken'],$_SESSION['requestTokenSecret']);
//oauth_verifierを使ってAccess tokenを取得
$oAccessToken = $oOauth->getAccessToken($sVerifier);
//取得した値をSESSIONに格納
$_SESSION['oauthToken'] = $oAccessToken['oauth_token'];
$_SESSION['oauthTokenSecret'] = $oAccessToken['oauth_token_secret'];
$_SESSION['userId'] = $oAccessToken['user_id'];
$_SESSION['screenName'] = $oAccessToken['screen_name'];
//loginページへリダイレクト
header("Location: ./login.php");
?>

callback.php

<?php
session_start();
require_once("./lib/twitteroauth.php");
//require_once("./lib/setting.php");

//URLパラメータからoauth_verifierを取得
if(isset($_GET['oauth_verifier']) && $_GET['oauth_verifier'] != ''){
	$sVerifier = $_GET['oauth_verifier'];
}else{
	echo 'oauth_verifier error';
	exit;
}

//リクエストトークンでOAuthオブジェクト生成
$oOauth = new TwitterOAuth($consumer_key,$consumer_secret,$_SESSION['requestToken'],$_SESSION['requestTokenSecret']);
//oauth_verifierを使ってAccess tokenを取得
$oAccessToken = $oOauth->getAccessToken($sVerifier);
//取得した値をSESSIONに格納
$_SESSION['oauthToken'] = $oAccessToken['oauth_token'];
$_SESSION['oauthTokenSecret'] = $oAccessToken['oauth_token_secret'];
$_SESSION['userId'] = $oAccessToken['user_id'];
$_SESSION['screenName'] = $oAccessToken['screen_name'];
//loginページへリダイレクト
header("Location: ./login.php");
?>

./lib/setting.php

<?php
$consumer_key = "*************************";
$consumer_secret = "***************************************";
$callBackUrl = "http://" . $_SERVER["HTTP_HOST"] . dirname($_SERVER["SCRIPT_NAME"]) . "/callback.php";
?>