PHPでOAuthを使ったサンプルコード
11 22, 2009
PHPで作ったゲームサイトでOAuthを利用したので、使い方やサンプルをメモしておきます。
このページ(SDN Project)を参考(というかそのまま)にしていますので、こちらも見てみてください。
OAuthも以前書いたOpenIDと同様に仕組みそのものは難しいのですが、サンプルを見ながら自分なりに変えていけば、それほど難しくなかったりします。
大まかな手順は、以下の通りです。
①Twitterにアプリケーション登録をする
②OAuthのPHPをダウンロードする
③自分でPHPを書く
④サーバにアップ
Twitterにアプリ登録
まず、Twitterに自分のアカウントでログインTwitterのOAuth申請のサイトから、自分のアプリケーション名やサイトのアドレスを登録します。
・Application Nameは、自分のサービスの名前です。ユーザは認証する際にこのアプリケーション名を確認することが出来ます。
・Application Websiteは、自分のサービスのURLです。
・Application Typeは、自分のサービスがデスクトップクライアント型か、ブラウザ上で提供されるサービスかどちらかを選びます。ここでは、ブラウザを選択します。
・Callback URLは、Twitterのサイトで認証された後、どのページに推移するかを指定します。ここでは、twitterAuth.phpという自分でつくるページに認証後戻ってくるようにします。
・Default Access Typeは、自分のサイトが書き込みを行う(Read&Write)のか、読むだけ(Read-Only)なのかを選びます。書き込みを選んだ場合には、自分のサイトがユーザに代わってつぶやきを投稿したり出来ます。 ここでは、ユーザの情報を取得するだけのサイトをつくるので、読み込みのみを選択します。
・Use Twitter for Loginは、サイトがTwitterをログインの代わりとして使うかを選択します。 実際この項目をチェックした場合と、しない場合に何が違うのかよく分かっていません。。。すいません。
登録後、Consumer KeyとConsumer Secretが発行されるので、メモっておきます。
この情報は後で使います。
また、登録情報に何か変更があった場合はTwitterのOAuth申請のサイトからいつでも変更可能です。
OAuthのPHPをダウンロードする
abrahamのgitから「twitteroauth」フォルダにあるファイルをダウンロードします。
以下の2つのファイルがあることを確認してください。
・OAuth.php
・twitteroauth.php
この2つのファイルがOAuthの難しい仕組みを考えなくてよくする、すばらしいコードです。
自分でPHPを書く
①トップページ
ここでは、index.phpとします。
以下のコードを入れてください。
<?php
session_start();
echo($_SESSION['username']);
?>
認証後、Twitterユーザ名を表示します。
また、以下のタグも入れてください。
<a href="myCode.php">Twitter認証</a>
このリンクをクリックすると↓で作成するTwitter認証ページへとび、そこからTwitterへリダイレクトされます。
②認証ページ
↓のサンプルコードをダウンロード(PCに保存)してください。
myCode.php(拡張子が.htmlになっているので.phpに変更してください)
ファイルを開いて、赤く丸がしてある部分を自分の環境に合ったように変更します。
・コンシューマkey: Twitterアプリケーション申請の時に表示された文字列
・コンシューマsecret: Twitterアプリケーション申請の時に表示された文字列
・$tok["screen_name"]: Twitterのユーザ名
・header("Location: /"): リダイレクト先の指定。
*③PHPを実行するサーバがプロキシサーバの内側にある場合(yonekawaさんコメントありがとうございました)
twitteroauth.php
に
curl_setopt($ci, CURLOPT_PROXY, 'proxy.example.com:8080');
を追加
サーバにアップ
これまでの4つのファイルをサーバにアップします。
階層は
index.php
myCde.php
<twitter>(フォルダ)
OAuth.php
twitteroauth.php
これで完了です。
index.phpを表示し、リンクをクリックするとTwitterの画面が出てくると思います。
そこでアプリケーションへのアクセスを許可すると、トップページへ戻ってきて、Twitterユーザ名が表示されていれば成功です。
まず、Twitterに自分のアカウントでログインTwitterのOAuth申請のサイトから、自分のアプリケーション名やサイトのアドレスを登録します。
・Application Nameは、自分のサービスの名前です。ユーザは認証する際にこのアプリケーション名を確認することが出来ます。
・Application Websiteは、自分のサービスのURLです。
・Application Typeは、自分のサービスがデスクトップクライアント型か、ブラウザ上で提供されるサービスかどちらかを選びます。ここでは、ブラウザを選択します。
・Callback URLは、Twitterのサイトで認証された後、どのページに推移するかを指定します。ここでは、twitterAuth.phpという自分でつくるページに認証後戻ってくるようにします。
・Default Access Typeは、自分のサイトが書き込みを行う(Read&Write)のか、読むだけ(Read-Only)なのかを選びます。書き込みを選んだ場合には、自分のサイトがユーザに代わってつぶやきを投稿したり出来ます。 ここでは、ユーザの情報を取得するだけのサイトをつくるので、読み込みのみを選択します。
・Use Twitter for Loginは、サイトがTwitterをログインの代わりとして使うかを選択します。 実際この項目をチェックした場合と、しない場合に何が違うのかよく分かっていません。。。すいません。
登録後、Consumer KeyとConsumer Secretが発行されるので、メモっておきます。
この情報は後で使います。
また、登録情報に何か変更があった場合はTwitterのOAuth申請のサイトからいつでも変更可能です。
OAuthのPHPをダウンロードする
abrahamのgitから「twitteroauth」フォルダにあるファイルをダウンロードします。
以下の2つのファイルがあることを確認してください。
・OAuth.php
・twitteroauth.php
この2つのファイルがOAuthの難しい仕組みを考えなくてよくする、すばらしいコードです。
自分でPHPを書く
①トップページ
ここでは、index.phpとします。
以下のコードを入れてください。
<?php
session_start();
echo($_SESSION['username']);
?>
認証後、Twitterユーザ名を表示します。
また、以下のタグも入れてください。
<a href="myCode.php">Twitter認証</a>
このリンクをクリックすると↓で作成するTwitter認証ページへとび、そこからTwitterへリダイレクトされます。
②認証ページ
↓のサンプルコードをダウンロード(PCに保存)してください。
myCode.php(拡張子が.htmlになっているので.phpに変更してください)
ファイルを開いて、赤く丸がしてある部分を自分の環境に合ったように変更します。
・コンシューマkey: Twitterアプリケーション申請の時に表示された文字列
・コンシューマsecret: Twitterアプリケーション申請の時に表示された文字列
・$tok["screen_name"]: Twitterのユーザ名
・header("Location: /"): リダイレクト先の指定。
*③PHPを実行するサーバがプロキシサーバの内側にある場合(yonekawaさんコメントありがとうございました)
twitteroauth.php
に
curl_setopt($ci, CURLOPT_PROXY, 'proxy.example.com:8080');
を追加
サーバにアップ
これまでの4つのファイルをサーバにアップします。
階層は
index.php
myCde.php
<twitter>(フォルダ)
OAuth.php
twitteroauth.php
これで完了です。
index.phpを表示し、リンクをクリックするとTwitterの画面が出てくると思います。
そこでアプリケーションへのアクセスを許可すると、トップページへ戻ってきて、Twitterユーザ名が表示されていれば成功です。
ソーシャルブックマークする。