ゼロから学ぶOAuth

第3回 OAuth Consumerの実装(応用 : smart.fm APIおよびGoogle Data APIsの利用)

この記事を読むのに必要な時間:およそ 5.5 分

Google Contacts Data APIの利用

Google Data APIsではscopeをサポートしています。例えばGoogle Contacts Data APIにアクセスする場合は"https://www.google.com/m8/feeds",Google Calendar APIにアクセスする場合は"http://www.google.com/calendar/feeds"というscopeに対して認可を得たAccess Tokenが必要になります。

さらにGoogleの特徴として,scopeパラメータがRequest Token取得時に必須になっています。同じくscopeをサポートしているYahoo! OAuthでは,Consumer登録時にscopeを決定してしまうのに対して,Googleは新規に発行されるRequest Tokenごとにscopeを設定しているため,このような仕様になっているようです。

required_parameters = {:scope => "https://www.google.com/m8/feeds"}
@consumer.get_request_token({}, required_parameters)

ruby-oauthでGoogle OAuthを利用する場合は,scopeパラメータとrequest_token_path,authorize_path,access_token_pathの各エンドポイント以外はruby-oauthのデフォルト設定のままでOKです。ただしGoogleはsignature_methodとしてRSA-SHA1のサポートも行っているので,RSA-SHA1を使いたい場合はsignature_methodとprivate_key_fileを指定してください。

その他にはGoogle Apps専用に"2-legged OAuth"と呼ばれるユーザを挟まないOAuthを提供していたり,OpenIDとOAuthのハイブリッド仕様を提供していたりします。詳しくはOAuth Authentication for Web ApplicationsFederated Login for Google Account Usersをご覧ください。

補足:Yahoo! OAuthの利用

Yahoo! OAuthは若干特殊な仕様になっているため,ruby-oauthをそのまま利用することはできません。ここでは詳しい利用方法は紹介しませんが,興味のある方はruby-oauth で Yahoo! OAuth を使う方法を参考にしてください。

Yahoo! Japanでも今年夏までにはOAuthの提供が開始される予定ですので,今後OAuth Consumerを実装される方はYahoo! OAuthの動向にも注目しておくと良いでしょう。

OAuth Consumer開発者の皆様へ

OpenIDでは世界的にも成功事例として認識されている日本ですが,OAuthはまだあまり浸透していないようです。しかしOpenID + OAuthハイブリッド仕様やYahoo! JapanのOAuthリリースなど,今後ますますOAuthの利用価値が高まることと思います。

今後ますます国内のOAuth Consumerが増えていくことを期待しています。

著者プロフィール

真武信和(またけのぶかず)

Cerego Japan Inc.で働くWebエンジニア。

smart.fmで外部APIとの連携機能(OAuth Consumer)の開発に携わるほか、smart.fm API(OAuth Service Provider)の開発にも携わっている。

URL:
http://matake.jp/
http://smart.fm/users/matake