RPXのしくみを細かく調べる前にとりあえず実装してみた

最近、RPXやFacebook Connect,Google Friend Connectあたりをもう一度調べて、より開発者にやさしいOpenID/OAuth wrapperを考えてみようかなと思っています。

で、とりあえず動かしてからだろってことで、最初はRPXです。
RPXの認証を実装するためのドキュメントはこちら。

ちなみにお金がないので無料のBasicプランです。
できることも少なそうなので、今回やることは簡単です。

  • 認証画面にユーザーを送る際に、token_urlを指定
  • 認証後にPOSTで送られてくるtokenパラメータを用いてRPXのAPIをたたき、認証済ユーザーの属性情報にアクセス

OpenID/OAuthの処理をRPX側で全部やってくれる。
こちらは認証要求と認証結果の要求をシンプルに実装するだけ。
とりあえず誰かにログインさせてそいつが何者か知ることができれば良い、ぐらいであればじゅうぶんですね。

動作確認

認証時の画面は次の2パターンが用意されています。

  • modal overlay
  • embedded

modalのキャプチャはこちら。

embeddedのキャプチャはこちら。

認証は全てRPXにおまかせで、最後にPOSTパラメータでtokenが渡されます。
そのtokenを用いてAPIアクセスした結果をもって認証状態にしたり、新規ユーザー登録的なものをすればいいわけですね。

{
  "profile": {
    "name": {
      "formatted": "ritou"
    },
    "photo": "http:\/\/a1.twimg.com\/profile_images\/740488206\/DSCF9765_normal.JPG",
    "displayName": "ritou",
    "preferredUsername": "ritou",
    "url": "http:\/\/twitter.com\/ritou",
    "providerName": "Twitter",
    "identifier": "http:\/\/twitter.com\/account\/profile?user_id=hogehoge"
  },
  "stat": "ok"
}

有料プランはもっといろいろできておもしろそうですが、とりあえずここまで。
これだけの機能であれば、開発者はHTML + JS + 1回のAPIアクセスで済みます。
最後のAPIアクセスもJSでやらせればって思うけど、APIKeyが必要なのでアレだな。。。

※RPXのjsはFF以外でSSL証明書のエラー出るような気がする。。。気のせいかな。中間証明書とかかな?