現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。前回の記事から間が空いてしまいましたが、今回もOpenIDのお話をさせていただきます。前回の記事では、OpenIDのリニューアルの話と、拡張仕様であるAXの説明をさせていただきました。ExtensionのPopupモードについて説明させていただきます。あり、この中にはOpenIDのフローをユーザーによりわかりやすくするための仕組みが記載されています。MySpaceなどではすでにいくつか実装がされているものもあります。JAPANのOpenIDのリニューアルでは、この仕様の中からPopupモードに対応しました。Providerのログイン画面をPopupで開き、Popupしたウインドウ内でOpenIDのフローを行うための拡張仕様です。今まで見ていたRPサイトを後ろに残したままにするため、RPとOPの行き来が発生する従来のフローよりも今何が起こっているのかがユーザーにとってわかりやすいものとなります。ConnectやFacebookのOAuth2.0など、外部サイトで認証を行う仕組みでは、このようにポップアップで同意フローを行うのが最近主流となりつつあります。JAPANは今回のPopupモード対応で、ログイン画面と同意画面を、Popupモードに対応した小さな画面を作成しました。サンプル前回の記事でも紹介した、DjangoのOpenIDのライブラリを少し修正して、Popupモードに対応させて見ます。Popupモードの仕様では以下の実装方法が定められています。</XRD></xrds:XRDS>Popupに対応していることがわかりますね!次にRPからOPにポップアップでOpenIDフローが行われることを伝える方法です。これは前回の記事で紹介したライブラリを少し修正して行います。self.mode)Extensionクラスを継承して実装します。このような形で実装します。auth_request.addExtension(popup_request)次にviews.pyを編集し、popupのパラメータをリクエストに含めます。border="0"></a>最後にテンプレートを編集し、ポップアップされるようにjavascriptを入れます。これらの編集を行ったあとに、Djangoを起動して実際に動きを試してみます。ログインボタンを押すとログイン画面がポップアップで表示されます。ログインするとポップアップに最適化された(したつもり)の同意画面がでてきます。JAPANはもう少し大きなサイズになってしまいました。残念です...まとめPopupモードを使うことで、ユーザーエクスペリエンスが向上します。対応していないOPもあるため、RP側はOPによって処理を分ける必要がありますし、ポップアップを制御するためのJavascriptを実装する必要があったりと、RP側の負担が増えるというデメリットもあります。iPhoneやAndroidなどのスマートフォンでは、ポップアップの制御が困難であるため、通常通り同一ウィンドウで遷移するフローをお勧めします。ちなみにYahoo!のOpenIDはiPhone対応を行っており、iPhoneでアクセスすると最適化されたページが表示されます!Androidもそのうちやります。2回にわたってOpenIDの新機能の説明をさせていただきました。これを機にYahoo!のOpenID対応サイトが増えることを願っています。XRDSとはOPのエンドポイントや対応している仕様について記載されたXML文書のこと。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。