mixiアプリにおけるRestful API for PCのJavaサンプルコード
mixi Developer Center (ミクシィ デベロッパーセンター) » 2-legged OAuthによるAPIアクセス
mixi developer Centerにはphp, python, perlのサンプルコードが記載されているが、Javaのサンプルコードがない。
そこでJavaでRestful API for PCによって、アカウント情報を取得する方法を調べた。
OAuthライブラリ
2-legged OAuthによる通信には、ApacheJMeter_oauth-v2.jarを使用。
oauth - Project Hosting on Google Codeの右のほうにある。
依存ライブラリ
oauth-httpclient4
Source path: svn/ code/ maven/ net/ oauth/ core/ oauth-httpclient4/ 20090913/ oauth-httpclient4-20090913.jar
上記はコンパイル時にエラーだが、下記のライブラリにも依存してる。
commons-logging-1.1.1.jar
httpclient-4.0.1.jar
httpcore-4.0.1.jar
サンプルコード
2-legged OAuth and the Gmail atom feed - Stack Overflowのコードを参考にさせていただきました。
import java.net.URL; import net.oauth.OAuth; import net.oauth.OAuthAccessor; import net.oauth.OAuthConsumer; import net.oauth.OAuthMessage; import net.oauth.ParameterStyle; import net.oauth.client.OAuthClient; import net.oauth.client.httpclient4.HttpClient4; public class TwoLeggedOAuthSample { private static String CONSUMER_KEY = "YOUR_CONSUMER_KEY"; private static String CONSUMER_SECRET = "YOUR_CONSUMER_SECRET"; public static void main(String[] args) throws Exception { OAuthConsumer consumer = new OAuthConsumer(null, CONSUMER_KEY, CONSUMER_SECRET, null); String user = "00000000"; String baseFeed = "http://api.mixi-platform.com/os/0.8/people/@me/@self"; URL url = new URL(baseFeed + "?xoauth_requestor_id=" + user); OAuthAccessor accessor = new OAuthAccessor(consumer); accessor.consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1); OAuthMessage requestMessage = accessor.newRequestMessage(OAuthMessage.GET, url.toString(), null); System.out.println(" request: " + requestMessage); OAuthClient client = new OAuthClient(new HttpClient4()); OAuthMessage responseMessage = client.invoke(requestMessage, ParameterStyle.AUTHORIZATION_HEADER); System.out.println(" response: " + responseMessage.readBodyAsString()); } }
CONSUMER_KEYとCONSUMER_SECRETはそれぞれmixiアプリ設定画面から取得した値、userは自分のpersonIdに書き換える。
mixiアプリにアクセスしたあと、上記コードを実行すると、JSON形式で自分の各種情報が取得される。
依存ライブラリが多いので、Google App Engineで使う場合は、spin-upに影響しそう。