はてなのAPIがOAuth対応したというので、早速試してみた!

はてなAPIがOAuthに対応したらしいです。
このブログでもお世話になっているはてなさんなので、チェックしてみましょう。

ドキュメントはこちら。
http://developer.hatena.ne.jp/ja/documents/auth/apis/oauth

まずは、ConsumerKeyの登録です。

その1.ConsumerKeyの登録

「OAuth 開発者向け設定ページ」はこちら。
http://www.hatena.ne.jp/oauth/develop

こんな画面になります。

ボタンを押して続けましょう。
新規登録画面ていうよりか、一瞬でもうアプリケーションが登録済になっていてその編集画面っぽいのに移りました。

ちょ、デフォルト値としてアプリケーション名が"ritou"、アプリケーションURLが"http://www.hatena.ne.jp/ritou/" って入ってますが、絶対このURLは使わないしサービス名が自分の名前て。。。
こころを落ち着かせて、とりあえず情報を入れていきます。

Scopeは、全部つけておきます。

【ここに注目!】
はてなのOAuthでは、ConsumerKey登録の時点であらかじめ利用する可能性のあるScopeを指定しておきます。

「変更する」を押して、変更完了です。。。やっぱ最初なのに変更って気になる。
ってあれれ?キャプチャとってブログ書きながらだからか、なんかおかしくなっちゃいました。

はい、こうなったのは全て私が悪いんですね。
こころを落ち着かせて、もう一回やり直し。


登録done.

その2.Request Token取得

なんか久々のOAuth 1.0aデモ。
ここはバックエンドのリクエストなので、省略したいところですが。。。
ちょっと見てくださいよこれ。

Request token の取得URLは https://www.hatena.com/initiate になります。典型的なリクエスト・レスポンスは次のようになります。

# HTTPS
POST /oauth/initiate HTTP/1.1
Host: www.hatena.com
Authorization: OAuth realm="",
oauth_callback="oob",
oauth_consumer_key="yTVGWKqa6OiH5A%3D%3D",
oauth_nonce="0c670efea71547422662",
oauth_signature="lvQC7AXTRIaqxbjwVGgPlYuNaaw%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1291689730",oauth_version="1.0"
Content-Type: application/x-www-form-urlencoded
Content-Length: 33

scope=read_public%2Cread_private

Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center

サンプルのoauth_callbackパラメータが"oob"って、クライアントアプリのサンプルですか?
こころを落ち着かせて、認証用URLへのリダイレクトまで進めます。

その3.認証用URLにリダイレクト

【ここに注目】
はてなのOAuthは、PC、スマートフォン、モバイルに対応しているようです。
それらは、リダイレクト時のURLによってきまります。

次にユーザーからはてなのリソースへのアクセス許可を得るために、ユーザーを一度はてなへリダイレクトする必要があります。ユーザーのデバイスによって次の表の URL にユーザーをリダイレクトすることを推奨します。
PC https://www.hatena.ne.jp/oauth/authorize
スマートフォン https://www.hatena.ne.jp/touch/oauth/authorize
携帯電話 http://www.hatena.ne.jp/mobile/oauth/authorize

Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center

これ、mixiとかfacebookのように、displayパラメータで受け取ればよかったのでは?と小さなことが気になったりします。
とりあえず、こんな画面が表示されます。

Scopeの説明部分がありますね。
そんなに細かくはないですが、twitterのScope(READ/WRITE)に比べて、PublicとPrivateで割ってある感じですね。

write_publicはread_public、write_privateはread_privateを包含しているような気がするので、わざわざ全部表示させなくてもよかったのでは?
そんなことはない?

その4.Access Token取得

Access Tokenを取得するところで、ドキュメントには"name"パラメータと"display_name"パラメータが返されると書いていますが、実際は"url_name"パラメータと"display_name"パラメータでした。
typoですかね?

oauth_token=(Access Token)
&oauth_token_secret=(Access Token Secret)
&url_name=ritou
&display_name=ritou

その5.はてなの OAuth 対応 API を利用する

ここから後は自分で実装してみてください。

サンプルサイト

ここから試せます。
http://r-weblife.sakura.ne.jp/hatena_oauth/?init=1
もちろん、このデモサイトはスマートフォン、モバイル対応をしていません。


まとめ

  • とりあえず、OAuth 1.0aにちゃんと対応
  • テンプレ出しわけがパラメータではないのが不思議
  • Scopeの切り方はTwitter+αって感じ
  • Scopeはパラメータでちゃんと指定しないとだめ。ってことは最初に登録した意味って???
  • ドキュメントの日本語が気になる。なんかを訳した?
  • revokeの方法がわかりません revokeしたいときはログイン - はてな→ユーザー設定→外部アプリケーション認証→外部のアプリケーションから・・・ でいけました

おもひで

はてな認証APIといえば、2007年ぐらいに私が前職でOAuthの前のBBAuthとかいわれたりするやつをせっせと開発してたときから既にありました。
ライブドアAuthとともにユーザー認証つきAPIアクセスの手段として提供されていたのですがみんな知ってましたか?
今までOAuth対応していなかったのが不思議なくらいですね!

ではまた!