Yahoo! JAPAN のTechBlogで紹介されてるphpのOAuth SDKが、9/27時点で48もブクマされているので、使ってみます。
■ 取得
$ wget "http://developer.yahoo.co.jp/sample/download/oauth/sample1" $ unzip sample1 Archive: sample1 inflating: yoauth_php_sdk/lib/CookieSessionStore.php inflating: yoauth_php_sdk/lib/NoCookieSessionStore.php inflating: yoauth_php_sdk/lib/OAuth.php inflating: yoauth_php_sdk/lib/OAuthClient.php inflating: yoauth_php_sdk/lib/YahooAbstractAPI.php inflating: yoauth_php_sdk/lib/YahooAuthentication.php inflating: yoauth_php_sdk/lib/YahooException.php inflating: yoauth_php_sdk/lib/YahooHeaderParser.php inflating: yoauth_php_sdk/lib/YahooLogger.php inflating: yoauth_php_sdk/lib/YahooOAuth.inc inflating: yoauth_php_sdk/lib/YahooSession.php inflating: yoauth_php_sdk/lib/YahooSessionStore.php inflating: yoauth_php_sdk/lib/YahooUtil.php inflating: yoauth_php_sdk/LICENSE.txt inflating: yoauth_php_sdk/README.txt $ cd yoauth_php_sdk
■ 必要なファイルを作成
$ vim OpenWatchListApi.inc
PHPでYahoo!のOAuth対応APIにアクセスしてみよう! - Yahoo! JAPAN Tech Blogにあるとおり作ります。
ここでtypo発見。。。
lib/YahooAbstractApi.phpをrequireするように書かれていますが、実際のファイルはlib/YahooAbstractAPI.phpだったりします。
<?php //require('lib/YahooAbstractApi.php'); これ間違い require('lib/YahooAbstractAPI.php'); //変更
$ vim sample.php
ここも、PHPでYahoo!のOAuth対応APIにアクセスしてみよう! - Yahoo! JAPAN Tech Blogにあるとおり作ります。
PHPのインクルードパスうんぬんを気にしなくていいように、こんな記述をしました。
<?php // 0. phpのインクルードパスをごにょごにょするコードを追記 $path_extra = dirname(__FILE__); $path = ini_get('include_path'); $path = $path_extra . PATH_SEPARATOR . $path; ini_set('include_path', $path); // 1.Include OAuth library. require('lib/YahooOAuth.inc'); // 2.Consumer Key & Secret ..........
これはOpenIDのPHPライブラリで書いてあったので、ちょっとしたPHPのサンプル動かす時に参考にしてます。
あと、htmlentitiesだとやたらと文字化けするような気がするので、特殊文字だけ変換するhtmlspecialcharsにします。
あと、個人的にtextareaのほうが見やすいので、、、(ry
PHP: htmlentities - Manual
PHP: htmlspecialchars - Manual
<pre><?=htmlentities( $response )?></pre> → <textarea cols="100" rows="30"><?=htmlspecialchars( $response )?></textarea>
で、動きました。
http://r-weblife.sakura.ne.jp/libraries/yoauth_php_sdk/sample.php
当たり前ですが、
Yahoo!オークションでウォッチリストに追加しておかないと!!!
■ おまけ : GUIDを使いたい!
Yahoo! OAuthでは、OAuthのフローの「3.Access Tokenの取得」のレスポンスに記載されている通り、Yahoo! JAPANで認証状態のユーザーを識別するxoauth_yahoo_guidという値をレスポンスパラメータに含むことで、Consumer側でユーザの変化に気付くことができるようになります。OAuth Coreはシングルサインオンのしくみではないですが、Consumer上のユーザとYahoo! Japan上のユーザー識別子を紐付けることで、よりユーザ管理がしやすくなるのではないのでしょうか。
Yahoo! JAPANがOAuthのService Providerになりました! - Yahoo! JAPAN Tech Blog
ということで、このSDKを使った際にxoauth_yahoo_guidで受け取った値をユーザー管理に使うための方法を確認しておきます。
- YahooSessionクラスのprivate変数$guidに格納される
- getGuid()という関数で引っ張れる
<html> <head> <title>GUID確認・サンプルコード</title> </head> <body> <h1>OAuthにより認可されたユーザーのGUID</h1> <pre><?php print $session->getGuid(); ?></pre> </body> </html>
http://r-weblife.sakura.ne.jp/libraries/yoauth_php_sdk/sample_guid.php
■ コード置き場
追記 : ファイル名は修正されたようです。