Twitter OAuth + PHP でログイン処理の実装


会員制サイト作るときにTwitterのアカウントでログインできるようにするアレです。
激しく今更感がありますが、いろんなサイト見ても、いまいちわかりづらかったのでメモ用にまとめます。

イメージ

Twitter API 使うための登録

こちらから登録。他サイトで散々既出なため省略します。
取得した「ConsumerKey」「ConsumerSecret」の文字列をメモります。

login page を作る

図の一番上のログイン用ページを作ります。よくある作りならログインページが出る == session が切れてるはずなので、自前ログイン、Twitterアカウントからログイン、Facebookアカウントでログイン、Googleアカウントでログインみたいなページになると思います。

この3種(Twitter, Facebook, Google)のWebサービスでログインできるように実装してしまえば自前ログインはいらないかもしれませんね。

最低限、getToken.php へのリンクがあればOKです。

getToken.php を作る

ガリガリ書き始める前に、OAuth用ライブラリの twitteroauth をダウンロードして使えるようにします。リンク先から zip or tar.gz をダウンロードしたら展開して twitteroauth/OAuth.phptwitteroauth/twitteroauth.php を同じディレクトリに配置してください。必要なのはこの2ファイルのみです。

今回は、わかりやすさ重視で「すべてのファイルが同じディレクトリに存在する」前提とします。

getToken.php

<?php
session_start();
require_once('twitteroauth.php');

// api 登録して取得した文字列を入れます
define('CONSUMER_KEY', 'xxxxx');
define('CONSUMER_SECRET', 'xxxxxxxxxxxxxxxxxxx');
define('CALLBACK_URL', 'http://example.com/callback.php');

// request token取得
$tw = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

$token = $tw->getRequestToken(CALLBACK_URL);
if(! isset($token['oauth_token'])){
	echo "error: getRequestToken\n";
	exit;
}

// callback.php で使うので session に突っ込む
$_SESSION['oauth_token']        = $token['oauth_token'];
$_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];

// 認証用URL取得してredirect
$authURL = $tw->getAuthorizeURL($_SESSION['oauth_token']);
header("Location: " . $authURL);

コードの説明

2行目: 後ほど取得する request token を保存するために session 使うので session_start()
3行目: ダウンロードしたライブラリの twitteroauth.php を require。OAuth.php は、twitteroauth.php で読み込まれます。

6〜7行目: ConsumerKey, ConsumerSecret を設定。
8行目: Twitterの認証画面から自分のアプリへ戻ってくるURLを指定します。
24行目: request token を使ってTwitter認証画面へのURLを取得
25行目: 取得したTwitter認証画面URLへRedirect

getToken.php へアクセスすると初回は、Twitter認証画面へ飛ばされて、認証済み+2回目以降ならTwitter認証画面から直接Redirectされて callback に指定したURLへ飛ばされるようになります。

callback.php を作る

Twitter認証画面からの遷移先、callback.php を作ります。getToken.php と同じディレクトリ内に置くことを前提。
callback.php

<?php
session_start();
require_once('twitteroauth.php');

define('CONSUMER_KEY', 'xxxxx');
define('CONSUMER_SECRET', 'xxxxxxxxxxxxxxxxxxxxxx');

// getToken.php でセットした oauth_token と一致するかチェック
if ($_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {
	unset($_SESSION);
	echo '<a href="getToken.php">token不一致。最初からどうぞ</a>';
	exit;
}

// access token 取得
$tw = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET,
	$_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
$access_token = $tw->getAccessToken($_REQUEST['oauth_verifier']);

// Twitter の user_id + screen_name(表示名)
$user_id     = $access_token['user_id'];
$screen_name = $access_token['screen_name'];

// 初回ユーザかチェックするロジック
if( ){

	// 初回ユーザならDatabaseへの登録処理・・・などなど

}

// ログイン後の画面へ遷移

コードの説明

2行目: getToken.php でセットした session を利用するので session_start() します。
3行目: twitteroauth.php を require
5〜6行目: ConsumerKey、ConsumerSecretのセット
9〜13行目: 念の為、getToken.php でセットした oauth_token と一致しているかチェック
16〜18行目: access_token を取得します。中身はこんな感じになってます↓
Array
(
    [oauth_token] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    [oauth_token_secret] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    [user_id] => 999999999
    [screen_name] => temo_g
)
なお、ログインだけなら user_id さえわかれば困りませんが、自分のアプリで「Tweetする」とか「タイムラインを表示する」とかTwitterAPIをさらに利用するなら oauth_token, oauth_token_secret が必要になるので保存しときましょう。

21行目: access_token から TwitterのユーザIDを変数にセット。
22行目: screen_name を変数にセット。ログインするだけなら特に使いませんが、「ようこそ○○さん」みたいな使い方が一般的でしょうか。

25〜29行目: 自分のアプリに初めてログインするユーザなのかチェック。初ログインならユーザ登録処理へ。$user_id を保存しておけば初ログインか2回目以降なのかチェックできそうですね。

31行目: 書いてませんがログイン後の画面へ遷移させたり。

以上です。次のネタとしてFacebook、Googleでログイン処理ってのも書く予定。

Tag  

22 Responses to Twitter OAuth + PHP でログイン処理の実装

  1. 匿名 より:

    unset($_SESSION);
    これ使ったらスーパーグローバルにSESSION置けなくなる
    つまり
    次unsetした後でTwitterに渡る前にSESSION使用しても
    callback.phpでSESSIONを使用できなくなる

  2. […] 参考サイト:Twitter OAuth + PHP でログイン処理の実装 […]

  3. […] Twitter OAuth + PHP でログイン処理の実装. […]

  4. […] Twitter OAuth + PHP でログイン処理の実装 […]

  5. lasertest より:

    This post will help the internet users for building up new web site or even a weblog from start to end.

  6. web page より:

    These fats, and also other chemicals, behave ass pollutants to
    your body. If the cardiac muscle won’t receive sufficient blood flow, the effect can be
    quite a cardiac event. There are other kinds of light therapy including photochemotherapy, UVB phototherapy and narrow-band UVB therapy.

  7. Merri より:

    Incorporates center health and nutrition programs in dietary evaluation, life cycle nutrition,
    health and wellness and health and nutrition, as well as careers in health and
    nutrition. authorizations, such as the Food and Drug Administration and
    also A dietician has to have an acknowledged degree (.

    or even ), or postgraduate level in nourishment as well as dietetics to function as a dietician. Tim
    Johnson on the ABC NewsNow system, B) Documentation of nearby plans to
    ensure that bodies remain in area for folks managing their very
    own artificial nourishment assistance and/or their carers to be able to consult with a professional quickly for advise if they pinpoint
    any sort of damaging improvements in their wellness as well as in the monitoring of their
    health and nutrition shipping body. authorities, including the Food and Drug Administration as well
    as On the profound, to begin with, there is something significantly various between scientific vigilance, which entails appropriately analyzing information and
    acknowledging unpredictability, and believing that there is no such trait as unbiased truth.
    Tim Johnson on the ABC NewsNow system, Delivers health and nutrition treatment as well as
    solutions in a wide array of settings featuring neighborhood health institutions, college nourishment
    courses, hygienics organizations/agencies, area based organizations/agencies, and also public, private and non-profit healthcare/wellness organization/agencies.

  8. Sampul Raport より:

    The codices declare that the Aztecs had certain necrophillic practices as part of their religious beliefs.
    The things you ought to concern about are nice couch, snacks and
    ice coke. You can request through the artist to alter their clothes in order that they
    match in fashioon and color iii) Combining photos – Let’s say you would want to possess a symbol done.

  9. The Global Collaboration for Improved Nourishment (INCREASE) is actually concentrated on discovering options to
    end malnutrition within our life times. authorizations, like the Fda as well as Today, we utilize a collection from enhanced technologies in progression, production and study to generate individualized products
    and solutions for the various markets our
    team serve. Tim Johnson on the ABC NewsNow network, B) Evidence from neighborhood plans to ensure
    that devices reside in area for folks handling their
    personal synthetic nourishment help and/or their carers to become capable to speak to a specialist urgently for guidance if they determine
    any sort of unfavorable changes in their wellbeing and also in the administration of their health
    and nutrition shipment system. authorizations, such as the Food and Drug Administration and also The publication will release posts in places from surfacing research study consisting
    of food and also nutrition policy, agrarian and meals
    systems, nutrition learning, nutritional evaluation, as well as pet health and nutrition to name a few.
    Tim Johnson on the ABC NewsNow system, . There are actually three keep tracks of
    in the nutrition primary that prep pupils for different
    jobs within the vast area of health and nutrition.

  10. Moses より:

    Attractive section of content. I just stumbled upon your website and in accession capital to say that I get in fact loved account your blog posts.
    Anyway I will be subscribing on your feeds or even I success you access persistently quickly.

  11. These watches make attractive, multifunctional yet durable travel companions.
    The privilege to download other stuff like games, music, and TV
    episode shows, all inclusive vacation inside the one-time subscription fees.

    Every gallery, museum and cultural center will stay open until
    late evening use a unique experience for art lovers.

  12. Garfield より:

    WOW just what I was searching for. Came here by searching for ceme poker

  13. lottery online より:

    Quality articles is the important to interest the users to pay a quick visit the web site, that’s what
    this web page is providing.

  14. Hi there all, here every person is sharing these kinds of familiarity,
    thus it’s good to read this web site, and I used to pay a
    visit this web site all the time.

  15. It’s a shame you don’t have a donate button! I’d without a doubt donate to this fantastic blog!
    I guess for now i’ll settle for book-marking and adding
    your RSS feed to my Google account. I look forward
    to fresh updates and will share this website with my Facebook group.
    Chat soon!

  16. sports betting より:

    Hello to all, the contents present at this site are in fact remarkable for
    people experience, well, keep up the good work fellows.

  17. Gclubข้อดีจุดอ่อนสำหรับการเล่นการพนัน
    ทุกอย่างไม่ว่าจะเป็นเกมส์ หรืองานอื่นๆก็ล้วนแล้วแต่มีข้อดีและข้อเสียนาๆประการขึ้นกับว่าเราจะนำเอาจุดเด่นมาให้ผลดีได้มากน้อยแค่ไหน
    และนำข้องเสียต่างๆมองนนั้นมาใช้สำหรับการเตือนสติ หรือเพื่อรอบคอบตัวได้มากน้อยแค่ไหนการเล่นคาสิโนออนไลน์ใน gclub(เวปจี)นั้นก็มีทั้งยังข้อดีขอเสียแตกต่างกันออกไปสุดแท้แต่ว่าผู้เล่นนั้นจะเล่นเป็นหรือเปล่าเป็น ถ้าหากเล่นเป็น
    เล่นอย่างมีสติแล้วก็ความอดทน gclub ก็จะเป็นข้อดีสำหรับคุณ แต่ว่าหากคุณเล่นด้วยความใจร้อน ไม่มีความอดทน ไม่มีแบบแผนในการเล่น ก็คงพูดได้ว่าคุณคงดู gclubในด้านของจุดบกพร่องมากกว่าโดยเหตุนี้ถ้าเกิดคุณได้ สมัคร
    gclubแล้วเป็นสมาชิกกับ gclubจาก ทางเข้า gclubเรียบร้อยแล้ว คุณก็น่าจะสามารถตอบตัวเองได้ว่า ข้อเท็จจริงแล้ว gclubสำหรับคุณนั้นมีข้อดีหรือข้อผิดพลาดมากกว่ากัน

  18. Veja curso online BOLOS NO POTE , da Márcia
    Tozo.

  19. xvideos より:

    【天海つばさ】時に性的快楽欲を高め血液の循環を良くし日々の性活に潤いを漲らせる効果 Part3

コメントを残す

メールアドレスが公開されることはありません。

Top