はてなの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: 33scope=read_public%2Cread_private
Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center
サンプルのoauth_callbackパラメータが"oob"って、クライアントアプリのサンプルですか?
こころを落ち着かせて、認証用URLへのリダイレクトまで進めます。
その3.認証用URLにリダイレクト
【ここに注目】
はてなのOAuthは、PC、スマートフォン、モバイルに対応しているようです。
それらは、リダイレクト時のURLによってきまります。
次にユーザーからはてなのリソースへのアクセス許可を得るために、ユーザーを一度はてなへリダイレクトする必要があります。ユーザーのデバイスによって次の表の URL にユーザーをリダイレクトすることを推奨します。
Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center
PC https://www.hatena.ne.jp/oauth/authorize
スマートフォン https://www.hatena.ne.jp/touch/oauth/authorize
携帯電話 http://www.hatena.ne.jp/mobile/oauth/authorize
これ、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
サンプルサイト
ここから試せます。
http://r-weblife.sakura.ne.jp/hatena_oauth/?init=1
もちろん、このデモサイトはスマートフォン、モバイル対応をしていません。
まとめ
- とりあえず、OAuth 1.0aにちゃんと対応
- テンプレ出しわけがパラメータではないのが不思議
- Scopeの切り方はTwitter+αって感じ
- Scopeはパラメータでちゃんと指定しないとだめ。ってことは最初に登録した意味って???
- ドキュメントの日本語が気になる。なんかを訳した?
revokeの方法がわかりませんrevokeしたいときはログイン - はてな→ユーザー設定→外部アプリケーション認証→外部のアプリケーションから・・・ でいけました