contactsから情報取得をしてみた。contactsから情報取得をしてみた。contactsから情報取得をしてみた。提案元のPlaxoから取得。discoveryはopenidライブラリに含まれているyadisモジュールを使用。認証はOAuthかBasic認証のサポートが必須となっているが、今回はBasic認証を使っている。openid.yadis.services.getServiceEndpointsで、XRDSからサービスエンドポイントを取得する。このとき、portableContactsのエンドポイントだけを取得するようにフィルタを使う。フィルタはIFilterというインターフェイスも定義されているが、Pythonだと関数を渡すだけでもOK。JavaやC#の時に使うのでしょう。エンドポイントが取得できたら、そのURLに対してGETリクエストしますが、認証がかかってるので、WWW-AUTHENTICATEヘッダで認証方法を確認します。前述のとおり、今回はBasic認証だけ対応。取得できたら、レスポンスボディをjsonに変換して、エントリを取り出します。supported.'</realm></scheme>Webアプリで使う場合はOAuthを使うことが多くなりそうですが、yadisリクエストを何度も行うことになりそうです。openid.consumerのソースをみると、yadis.managerというものがキャッシュをしてくれるようです。