Home > PHP > OAuth覚え書き

OAuth覚え書き

追記 このエントリーでの問題は解決しました。 解決編はこちらからどうぞ。

twitterの認証方式にOAuthというものがあるとのことで、色々やってみることにしました。 とりあえずPHPでやってみます。 以下覚え書き(自分用メモなんでだいぶ端折ってます。わかりづらくてごめんなさい)。

参考ページ: PHP+OAuthでTwitter – SDN Project TwitterのbotをOAuthに対応させる – しばそんノート Sinatra と OAuth を使って Twitter のタイムラインを取得してみた – まちゅダイアリー(2009-08-18)

OAuthってなんぞ

・現時点で一般的なBASIC認証が将来的にセキュリティ面から非推奨になるため、それにとって変ろうとしている認証方式 。 ・なんやかんやとめんどくさいけど便利らしい。 ・タイムラインに”○○で “とか表示させられるのはOAuthのおかげ。

ということらしいです。

いろいろ準備する

上のSDN Projectさんの通りに進めます。

まず、ライブラリ等を用意します。 abraham’s twitteroauth at master – GitHubから OAuth.phptwitteroauth.php、の2ファイルをDLしてくる。 twitteroauth.phptwitterOAuth.php にリネーム。 ここから oauth_test.txt をDLしてくる。 oauth_test.txtoauth_test.php にリネーム。 OAuth.phptwitterOAuth.phpoauth_test.phpの3ファイルをアップロード。

次にtwitterのOAuthクライアントにアプリケーションを登録します。 とりあえずtwitterでログインし、テスト用のアプリケーションを登録。 ここの Register a new application≫ からアプリケーションを登録。

Application Name : アプリケーション名。ツイートしたときに出る”○○で”の○○の部分になる。 ・Description : アプリケーションの説明。まぁ適当に。 ・Application Website : アプリケーションの配布元?説明ページ?のURL。ぶっちゃけよくわからない。 ・Organization : とりあえずパス。 ・Website : 同上。 ・Application Type : “Client” か “Browser” か。最初はとりあえず “Browser”。 ・Callback URL : Application Type が “Browser” だと出現。コールバックするときのURLを指定。今は上の oauth_test.php のパスを指定。 ・Default Access Type : “Read & Write” に指定。”Read-only”だとPOSTできないとのこと。 ・Use Twitter for login : とりあえずパス。

上記設定の後「保存する」を押すとアプリケーションが登録され、”Consumer key” と “Consumer secret” が発行される。

そしたら、先ほどアップロードした oauth_test.php を編集します。 8行目 $consumer_key の値に、発行された “Consumer key” を。 10行目 $cosumer_secret の値に、発行された “Consumer secret” を。 上書き保存し、 oauth_test.php をアップロード。 アップロードした oauth_test.php にアクセスすると、テキストフィールドにさっきの “Consumer key” と “Consumer secret” が入力された状態になっているのでそれを確認し、 ページ下部 “Click on the link to go to twitter to authorize your account.” の下のURLをクリックすると、 “An application would like to connect to your account” というページに飛ぶ。 ここで、表示されている製作者名・クライアント名が間違いないかを確認し、「許可する」をクリック。 すると、oauth_test.php にリダイレクトされ、Access TokenAccess Token Secret が発行される。

らしいのですが、ここで躓きました。 何度やっても Fatal error: Cannot unset string offsets in /サイトパス/twitter/twitteroauth.php on line 145 というエラーがでてしまいます。 何ぞ、と思って該当箇所を見てみると、

unset($parameters['id']);
との記述が。 $parameters を echo してみると、”GET” という文字列が得られたので、 PHP5からエラーとして処理されるようになった「文字列オフセットの不正利用」ではないかと。 というか “GET” という文字列が $parameters に入ってる時点でその前のほうの処理がうまくいってない気がするのです($parameters['id'] で何か値を取ろうとしてるし、ラップしてる function の引数に $method という変数があるのでどっちかといえばこっちが “GET” な気がするので)。

でもここの解決策が結局見当たらず、PHP4で使うことを前提に作られたのか、でも2ヶ月ぐらい前まではうまくいってるようだし、ただPHP5に移行してないだけなのか。 色々調べては見ているもののクリティカルな対応策は見つかっておりませぬ。 どうしたものかー。

解決編はこちら

Comments:1

gecko 09-12-04 (金) 20:08

http://gecko.hp2.jp/2009/12/04/sbs%E3%81%A3%E3%81%A6%E4%BD%95%E3%81%AE%E7%95%A5%EF%BC%9F/ SBS!SBS!

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://unolabo.boo.jp/archives/2009/12/03-oauth%e8%a6%9a%e3%81%88%e6%9b%b8%e3%81%8d.html/trackback
Listed below are links to weblogs that reference
OAuth覚え書き from うのらぼ。
pingback from うのらぼ。 - やっておいてよかった 10-01-08 (金) 17:34

[...] Oauth覚え書き Oauth覚え書き その2 [...]

Home > PHP > OAuth覚え書き

Search
Feeds
Meta

Return to page top