先週、 SpringSourceは、JavaプログラムからソーシャルネットワークサイトにアクセスするためのSpringベースのテンプレートであるSpring Socialの最初のマイルストーンをリリースした。
この最初のマイルストーンには、TwitterやFacebook、LinkedIn、Tripit向けのテンプレートが含まれている。Spring Social API は汎用的なURLベースのAPIではなく、個々のソーシャルネットワークサイトに特化した設計を行っており、これらのサイトと比較的素直に連携できるようになっている。個々のテンプレートは、RESTベースのWebサービスにアクセスするための汎用的なテンプレートであるSpringのRestTemplateの上に構築されている。
Spring Socialを使うために、開発者は次のことを行う必要がある
- 初回は、対象のソーシャルネットワークサイトの開発者アカウントを手動で設定する。
- 新しいユーザが追加された際には、プログラム的に対象のソーシャルネットワークサイトにOAuthトークンをリクエストする。
- 適切な Spring Sourceテンプレート(例 TwitterTemplate)をインスタンス化し、開発者キーと現在のユーザのOAuthキーを渡す。
- Spring Sourceテンプレートオブジェクト上の呼び出したいメソッドを呼び出す。ちょうどJdbcTemplateのメソッドを呼び出すのと同じ。
認可されてしまえば、ソーシャルネットワークサイトを操作するのに必要なコードは自明なものだ。以下の例は、ユーザのLinkedInのコネクションを取得するものだ。
LinkedInTemplate template = new LinkedInTemplate(developerApiKey, developerSecret, oauthAccessTokenValue, oauthAccessTokenSecret);
List <linkedinprofile> connections = template.getConnections();
もちろん、OAuthによる認可の部分が大変な部分なのだ。SpringSourceは、APIをどう使うかを示したGreenhouseと呼ばれるリファレンス実装を作成している。Greenhouseには、OAuthトークンをリクエストし、それぞれのプロバイダに接続する部分を示したサンプルコードが含まれている。しかし、すばらしいSpring SocialのチュートリアルがJettro Coenradie氏によって作成されており、こちらの方が簡単だ。
Spring Socialの将来のマイルストーンには、ドキュメントの改善および、認可情報を保持するためのOAuthサービスとのより密な連携を提供する予定だ。現時点では、開発者はどこかに認可キーを保持するような処理を行わなければならず、Spring Socialテンプレートに認可キーを渡さなければならない。しかし次のSpring Socialのマイルストーンでは、このプロセスをより簡易に行えるようなコードが含まれる予定だ。SpringSourceは、最終的なOAuthソリューションを現在Greenhouseにあるコードを元にしようと計画している。
Spring Socialを使う代わりに、サイト専用の他のライブラリを利用するという手もある。Twitterには、Twitter4Jやその他の優れたライブラリのエコシステムが存在する。その他のサイト用の専用ライブラリは、それよりは少し手に入れづらい。Facebookの前の公式Java APIであり、現在は見捨てられているものやRestFBなどだ。
開発者は、OAuthヘルパーライブラリを使って力仕事をすることもできるし、直接URLを操作することで、それぞれのサービスのREST風APIを利用することもできる。人気のあるOAuthライブラリとしては、Signpostや OAuth for Spring Security、Scribe、その他のライブラリなどが存在する。