PHPプログラムに関する各種メモ書き

codeigniterでTwitterログインを実現する

● codeigniterでTwitter,Facebookログインを実現する

● Twitter,Facebook APIキーを発行する

こちらからAPIキーを発行します(追加方法は割愛します。) https://apps.twitter.com/

● Twiter Oauthモジュールのインストール

composerからインストールします。
CodeIgniterで利用する場合は application ディレクトリに移動してから次のコマンドを実行します。
ターミナルから以下を実行

composer require abraham/twitteroauth

PHPから以下のように読み込みます

require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

または codeigniter の codeigniter/application/config/config.php の下記項目を TRUE にします。

$config['composer_autoload'] = TRUE;

● codeigniterのコントローラの作成

codeigniterの controllers に Oauth.php を以下のように作成します

public function twitter() {
    define('CONSUMER_KEY', 'XXXXXXXX');
    define('CONSUMER_SECRET', 'YYYYYYYY');
    define('OAUTH_CALLBACK', 'http://zzz.zzz.zzz/oauth/twitter_callback/');
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
    $request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
    $this->session->set_userdata('oauth_token', $request_token['oauth_token']);
    $this->session->set_userdata('oauth_token_secret', $request_token['oauth_token_secret']);
    $url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));
    redirect($url);
}


public function twitter_callback() {
	$session = $this->session->userdata();
	$q = $this->input->get(null, true);
	$request_token = array();
	$request_token['oauth_token'] = $session['oauth_token'];
	$request_token['oauth_token_secret'] = $session['oauth_token_secret'];
	if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
		die('Error!');
	}
	$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
	$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $q['oauth_verifier']));
	$this->session->set_userdata('access_token', $access_token);
	session_regenerate_id();
	redirect('oauth/mypage');
}

● ログインの実行

http://zzz.zzz.zzz/oauth/twitter/ へアクセスします

関連エントリー

No.1087
11/22 16:18

edit

CodeIgniter
Twitter