フレームワークを使ってOpensocialのOAuth認証を通す場合のハマりどころ

2010/9/28 火曜日 Posted in 記事紹介・リンク | No Comments »

近頃流行のOpensocialネタです。 mixiアプリやモバゲーなどでソーシャルゲームを作るにはOpensocialのOAuth認証で、署名をチェックするという処理があります。 リクエストのURLやパラメータなどから、アクセスの妥当性をチェックするというものなのですが、フレームワークを使っているとハマることがあるので、メモ代わりに書いておきます。   例えばCakePHPなどフレームワークの.htaccessではこのような形になっていることがあります。 このmod_rewriteの処理が「url」というGETパラメータを付けて署名認証をエラーにしてしまうのです。 RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]   回避するには簡単で、$_GETからunsetしてやればOKです。 // 余計なパラメータをunsetする unset($_GET['url']); //Build a request object from the current request $request = OAuthRequest::from_request(null, null, array_merge($_GET, $_POST)); 参考: mixi Developer Center 署名付きリクエストの検証 [developer.mixi.co.jp]   モバイルなどでconsumer keyを使った認証では、OAuth.phpでは$_SERVER['QUERY_STRING']を使っているので、次のように一度ばらして再構築でいけました。 parse_str($_SERVER['QUERY_STRING'], $query_arr); unset($query_arr['url']); $_SERVER['QUERY_STRING'] = http_build_query($query_arr);   モバイル版の参考コードもここに書きたいところですが、各社ともモバイル版の情報はなぜか非公開らしいので自重しておきます。 上記はPHPの例ですが、基本どの言語でも変わらないはずです。   関連: 日本Ruby会議2010の発表で使われたスライド資料「Ruby on Railsではじめる携帯電話向けオープンソーシャルアプリケーション開発」 ケータイ向けFlashソーシャルゲーム開発に関する連載記事「いまさらFlash Lite 1.1を使うための基礎知識」 ブックレビュー:mixiアプリをつくろう!OpenSocialで学ぶソーシャルアプリ ... Read more..