トップ «前の日記(2006-04-21) 最新 次の日記(2006-04-30)» 編集

活動日誌


2006-04-24

はてな認証 API のテスト

はてなの認証 API が公開されていたので、早速テストしてみました。

ヘルプの通りで特に問題はありませんでした。

まず、入口となるページではてなへのリンクを貼ります。MD5 を計算する必要がありますが、 例えば ruby を使って以下のような感じで求められます。

% ruby -rdigest/md5 'p Digest::MD5.hexdigest("abcde01234abcde0" + "api_key" + "faff512ffa3a23c85efaaa4bf92f5839")'

コールバック URL には http://shakenbu.org/yanagi/hatena-auth/hatena-auth.cgi を指定します。 その hatena-auth.cgi の中身は下のような感じです。

#!/usr/local/bin/ruby

require 'cgi'
require 'open-uri'
require 'digest/md5'
cgi = CGI.new

api_key = 'faff512ffa3a23c85efaaa4bf92f5839'
private_key = 'abcde01234abcde0' # 秘密鍵
cert = cgi.params['cert']
api_sig = Digest::MD5.hexdigest("#{private_key}api_key#{api_key}cert#{cert}")
uri = "http://auth.hatena.ne.jp/api/auth.json?api_key=#{api_key}&cert=#{cert}&api_sig=#{api_sig}"
open(uri) do |f|
  print "Content-Type: text/plain\n\n"
  puts f.read
end

秘密鍵のところは実際の値とは変えてあります。

ここでは単にレスポンスの中身を出力するだけにしてありますが、 実際のアプリケーションではこのレスポンスに従って処理を分ける形になります。

Ruby の JSON ライブラリは使ったことないですが、http://json.rubyforge.org/ が見つかりました。

クエリは ; 区切りでも大丈夫

http://auth.hatena.ne.jp/auth の呼び出しですが、クエリの区切りはちゃんと ; にも対応していました。

参照: B.2.2 URI属性値のアンパサンド記号

追記

結城さんもテストページを作られていました。http://d.hatena.ne.jp/hyuki/20060424#hatenaapi

Ruby 版のモジュールも出てきました。 http://subtech.g.hatena.ne.jp/secondlife/20060424/1145882341

ログアウトはどうやるのだろう

はてな認証 API をテストしてみての疑問。この手の認証 API を使ったことがないのですが、ログアウトってどうやるんでしょうか?

ログイン時の認証ははてなにしてもらって、ログインが成功していたら こちらのアプリでセッションを保持するわけですよね。

この場合、ログアウト処理ででこちらのアプリのセッションを消しても、 はてなにはログインしたままになってるので、はてなのログアウトもしないと いけないと思うのですが、どうすればいいのかなぁと。

一応 http://www.hatena.ne.jp/logout にリダイレクトすればはてなもログアウトできますけど、そのあとはてなのトップページに行ってしまいますよね。

本日のツッコミ(全2件) [ツッコミを入れる]
_ hyuki (2006-04-24 23:46)

逆に、はてなのほうでログアウトしたらどうなるんでしょう。いったんもらったcertがもう使えなくなる?…といってもcertはもともと一回しか使えないですよね。ということで、はてな側をログアウトするかしないかはサードパーティ側では考慮しなくてよいのではないでしょうか。単にその瞬間、そのセッションが正式なはてなユーザであることを示してもらったというサービスだと考えるのでは?(違っていたらごめんなさい)

_ yanagi (2006-04-24 23:58)

確かに、おっしゃられるとおりに、はてな API から見てサードパーティのひとつであるこちら側で<br>はてなのログアウトのことまで考える必要はない、というのが答えなんだろうと思います。<br><br>ただ、それでもちょっとひっかかりが残っていて、それがどこに由来するのかを考えてみると、<br>サードパーティ側でははてなのアカウントが有効であるかどうかを知りたいだけなのに、<br>強制的にはてなにログインしてしまうのがひっかかりの元なのかなぁと思いました。<br>うーん、何か勘違いしてるかな……


2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2006-04-21) 最新 次の日記(2006-04-30)»