- ZaimのAPIで遊んだ時のメモ - 2/3
Zaim APIの認証に関してドキュメントには以下のように書いてあり、
OAuth 1.0a
使ってねという旨が書いてあった。Check the format of OAuth 1.0a in this page: http://oauth.net/core/1.0a/ Zaim OAuth format is nearly the same with Twitter API: https://dev.twitter.com/docs/auth/oauth Zaim API requires that all OAuth requests be signed using the HMAC-SHA1 algorithm.
(内容が当時から更新されていない感は少しある)
どう実装するかと思ったが、ScribeJavaを用いると比較的簡単に実装できた。
ScribeJavaのサンプルにある.build(TwitterApi.instance());
のようなサービス別のクラスは使えないので、以下のようにOAuth10aService
を Overrideして使った。@Configuration class ZaimApiClientConfig( @Value("\${consumer_key}") private val consumerKey: String, @Value("\${consumer_secret}") private val consumerSecret: String, ) { companion object { const val API_BASE_URL = "https://api.zaim.net/v2" } @Bean fun zaimOAUthClient(): OAuth10aService = ServiceBuilder(consumerKey).apiSecret(consumerSecret) .build(object : DefaultApi10a() { override fun getRequestTokenEndpoint() = "${API_BASE_URL}/auth/request" override fun getAccessTokenEndpoint() = "${API_BASE_URL}/auth/access" override fun getAuthorizationBaseUrl() = "https://auth.zaim.net/users/auth" }) }
ZaimScribeJava - ZaimのAPIで遊んだ時のメモ - 3/3
Zaimのアプリケーション名だが、先頭に数字を使うことができないようだ。
アプリケーション作成時に先頭に数字を入力した場合は以下のようなエラー表示になった。見た限り上記の制約は書かれていなかったのと、エラー表示も不適切なため最初は何故アプリケーションが作成できないのか分からず時間をかなり使ってしまった…。
Zaim