PHP+Twitter+OAuth認証。twitteroauthを使ってTwitterアカウントでログインするサイトを作る為の覚え書き

PHPのライブラリtwitteroauthを使用してTwitterのOAuth(オーオース)認証を行うことができます。

使用するにはまずTwitter DevelopersMy applicationsページでアプリケーションを登録します。

  

この記事は1年以上前に書かれたものです。
情報が古い可能性があります。

アプリの登録をして、テストコードを使用して簡単な接続テストをやってみたってところまで書いていきたいと思います。

Webアプリを作る際にアカウントを作成するロジックを組まなくてもTwitterアカウントを用いてログイン可能ということです。前々からなにか作ってみたかったのですが、なかなか手を出せずにいました><;

INDEX

1. Twitter Developersへの登録

TwitterのAPIを使用するために連携アプリとしてTwitter Developersサイトでアプリの登録をしなくてはいけません。

Sign inをクリックします。

Twitterアカウントでログインしてください。

右上のアカウントが表示されているところから、My applicationsをクリックします。

Create a new applicationをクリックします。

アプリの名前・アプリの概要・WebサイトのURL・コールバックURLを入力ししてYes, I agreeにチェックを入れて画像認証を済ませてCreate Your Twitter applicationをクリックしてください。
CallBack URLは例えば、「xxx.jp」がドメインなら合「http://xxx.jp/twoauth/callback.php」とでも取り敢えずしておきます。
twoauthの部分は後でフォルダ名を合わせます。

アプリが無事生成されると以下のような画面になります。
ここに記されているConsumer keyやConsumer secretは後々必要になります。
Create my access tokenをクリックしてTwitter側の準備は終了です。

2. PHPライブラリの入手

PHPのライブラリtwitteroauthをダウンロードしてください。

zipファイルを解凍して出来たフォルダをtwoauthとリネームするとします。
フォルダの中身は以下のようになっています。

config.phpを修正し、CONSUMER_KEY・CONSUMER_SECRET・OAUTH_CALLBACKの値を変更します。
CONSUMER_KEYは取得したConsumer key。CONSUMER_SECRETは取得したConsumer secret。
OAUTH_CALLBACKはCallBack URLです、取り敢えず先ほど設定したものと同じで良いです。認証後指定したCallBack URLに飛びます。CallBack URLを全く指定していないとどうやら上手くいかないようです。
config.phpのOAUTH_CALLBACKを空に指定してもアプリ登録時に指定したCallBack URLに飛ぶようになっていたかと思います。

twoauthフォルダをまるごとサーバにアップロードしましょう。
「http://xxx.jp」にアップロードしたのであれば「http://xxx.jp/twoauth」にアクセスしてみてください。Twitterアカウントでのログインが可能なはずです。

3. デモページ

4. Application Type Accessレベルの設定

ログイン時アプリの認証としてこんな画面が出ます。

Accessレベルを設定により表示されているメッセージも変わります。

Read only

この連携アプリを認証すると、次の動作が許可されます。

  • タイムラインのツイートを見る。
  • フォローしている人を見る。

Read and Write

この連携アプリを認証すると、次の動作が許可されます。

  • この連携アプリを認証すると、次の動作が許可されます。
  • タイムラインのツイートを見る。
  • フォローしている人を見る、新しくフォローする
  • プロフィールを更新する。
  • ツイートする。

Read, Write and Access direct messagesに変えてみてもRead and Writeと表示メッセージは変わりませんでした。
アクセストークンをRecreateして際認証したり、consumer keyとconsumer secretをリセットしてみたりしたのですが、ダメでした。分かる方いらっしゃったら是非教えてください><;

おそらく上手くいけば以下のようになると思います。

2012/01/06 追記
ダイレクトメッセージの読み込みも有効にするには、redirect.phpの

$url = $connection->getAuthorizeURL($token);

の部分を

$url = $connection->getAuthorizeURL($token, false);

に変えればいいよってコメントで教えて頂きました、有難うございます><

Read, write, and direct messages

この連携アプリを認証すると、次の動作が許可されます。

  • タイムラインのツイートを見る。
  • フォローしている人を見る、新しくフォローする
  • プロフィールを更新する。
  • ツイートする。
  • ダイレクトメッセージを見る。
  

共有やブックマークなど

  • Kiyotaka Hayashi

    redirect.php にある。
    $url = $connection->getAuthorizeURL($token);

    $url = $connection->getAuthorizeURL($token, false);
    にすればダイレクトメッセージの読み込みもできるようになりますよー。

    • Kiyotaka Hayashiさん、ありがとう御座います出来ました!><

      ソース側の問題だったのですね…ずっと設定弄っててダメだったので諦めてました…w本当に有難う御座います!ブログにも追記しました!

  • Mahesh

    ツイタから取ったデータを自分のDBに入れることは必要ですか?

    • Maheshさんこんばんは!DBにデータを入れる必要があるかどうかはアプリケーションによるかと思います。