Java OAuth ライブラリを使って Cacoo API にアクセスする
【追記】もっとヨサゲなOAuthライブラリを用いたサンプルコードを、次の日に記載しています。
というわけで、UssyにRuby OAuth ライブラリを使って Cacoo API にアクセスする - Ussy Diary(2010-07-22)で先をこされて悔しかったので、自分もJavaでやってみました。404 Not Foundをほぼ流用させてもらいましたよっと。
サンプルプログラムは、Githubにあげています。
pom.xml
まずは、OAuthライブラリ(とその他)をMavenで取得するために、POMの設定から。
<!-- リポジトリの設定 --> <repositories> <repository> <id>oauth</id> <url>http://oauth.googlecode.com/svn/code/maven</url> </repository> </repositories> <!-- 依存関係の設定 --> <dependencies> <dependency> <groupId>net.oauth</groupId> <artifactId>oauth-core</artifactId> <version>20090531</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <dependencies>
Javaソースコード
コンシューマとの連携部分(CacooOauthConsumer.java)では、request token/authorize/access token URLをそれぞれ http://cacoo.com/api の通りに設定します。
... /** oauth request token URL. */ public String requestTokenURL = "https://cacoo.com/oauth/request_token"; /** oauth authorize URL. */ public String authorizeURL = "https://cacoo.com/oauth/authorize"; /** oauth access Token URL. */ public String accessTokenURL = "https://cacoo.com/oauth/access_token"; ...
その後、クライアントコード(App.java)ではconsumerKey/consumerSecretを適切に設定した上でアクセス先をCacooに変更します。事前にCacoo - Sign inからサンプルアプリケーションを設定して、consumerKey/consumerSecretを取得しておいてください。アプリケーションの種別は「クライアント」で。
... String consumerKey = "**********"; String consumerSecret = "************************"; ... // リクエストトークンを取得するのに使うパラメータ Map<String, String> params = new HashMap<String, String>(); params.put("scope", "https://cacoo.com/api/v1/diagrams.xml"); // リクエストトークンを取得 Map<String, String> result = consumer.getRequestToken(params); ... // Cacoo diagramsのデータを取得 String response = consumer.getResource("https://cacoo.com/api/v1/diagrams.xml", result.get("accessToken"), result.get("tokenSecret")); System.out.println(response); ...
サンプルアプリケーション実行
この状態でApp.javaを実行すると、コンソールに下記のようなメッセージが出力されます。
以下のURLをWebブラウザで開いてください。
https://cacoo.com/oauth/authorize?oauth_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
verifierを入力してね:
で、指示通りにURLをブラウザで開くと、このようなダイアログが表示されると思うので、"Authorize"してください。
その後、表示されるベリファイアコードをコピペして、コンソールに入力します。
これで、図一覧の情報がコンソールに出力されると思います。
で、API経由でCacooにアクセスできたのはいいことなのですが、実はOAuthの仕組みとかもよく分かっていないんです><。これからサンプルコードをいじりつつ勉強します。。。