2009-04-23 10 views
3

私はOpen IDを使って作業しています。私はRPXのようないくつかのライブラリがあることを知っていますが、私は自分自身を使いたいと思っています。Open Id XRDSディスカバリー

私が持っている質問は、Open Id発見シーケンスに関連しています。基本的に私はXRDSのドキュメントを使って、要求されたアイデンティティ(openid.claimed_id)からローカルアイデンティティー(openid.identity)を取得することに目を向けています。

私の質問は、XRDSの場所(X-XRDS-場所)を取得し、実際のXRDSの文書を取得するための別のcURLリクエストを作成するcURLリクエストを作成する必要がありますか?

DUMBリクエストのように、私は1つのcURLリクエストを作成し、Open IDサーバーを取得するだけですが、XRDSスマートメソッドを使用するには2つを作成する必要があります。誰も私にいくつかの情報を与えることはできません。

答えて

2

あなた、はい、完全なものにするにRPは、ユーザーがあなたに与えたURLでHTTP GETを実行し、XRDSドキュメント参照を検索し、そこから別のHTTP GETを検索します。 XRDSは別のサーバーでホストされる可能性があるので、同じ接続でない可能性があるため、XRDSは2つの要求の間で同じ接続を必要とするコードを作成しないでください。

あなたはHTTPヘッダーが含まあなたの最初のHTTP GETリクエストでの場合:

Accept: application/xrds+xml 

を次にページはXRDSドキュメントではなく、あなたがXRDSリンクに解析する必要がHTML文書に即座に応答することができます。 Content-Typeヘッダーのapplication/xrds + xmlのHTTP応答ヘッダーをチェックすることで、これが発生したことを検出できます。これは最適化であり、RPは通常、その2番目のHTTP GETコールを作成する必要はありませんが、それに依存することはできません。

0

私が与えることができる最高のアドバイスは、HTTP要求を少し抽象化してから、HTTP要求を2回実行するという全プロセスを実行することです。

永続的な接続を使用して処理を高速化したい場合は、カールのインスタンスを周りに置くことができますが、これは必要な場合とそうでない場合があります。

私はこれが役に立てば幸い、と幸運... OpenIDのは)=私はWebDAVのため、遭遇した最も大型で複雑なWeb標準の一つである

エバート

0

私はここでゲームに遅刻していることを知っていますが、the webfinger protocolもチェックしてください。これは標準の "useridとしての電子メール"パターンを取り、openidなどを探すためにそこから検索することができます。