今のところ、Yahoo!(米)でSregは使えません

そういえば、Yahoo!(米)のOpenIDSreg対応しているような気がしていたので、確かめてみます。

$ curl -I "http://www.yahoo.com"
・・・
X-XRDS-Location: http://open.login.yahooapis.com/openid20/www.yahoo.com/xrds
・・・

$ curl "http://open.login.yahooapis.com/openid20/www.yahoo.com/xrds"

中身はこうなっている。

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS
    xmlns:xrds="xri://$xrds"
    xmlns:openid="http://openid.net/xmlns/1.0"
    xmlns="xri://$xrd*($v*2.0)">
  <XRD>
    <Service priority="0">
      <Type>http://specs.openid.net/auth/2.0/server</Type>
      <Type>http://specs.openid.net/extensions/pape/1.0</Type>
      <Type>http://openid.net/sreg/1.0</Type>
      <Type>http://openid.net/extensions/sreg/1.1</Type>
      <URI>https://open.login.yahooapis.com/openid/op/auth</URI>
    </Service>
  </XRD>
</xrds:XRDS>

このへんに対応しているということですね。

では、さくらインターネットYahoo!OpenIDを使ってみます。
私が使ってるPHPのライブラリはぐちゃぐちゃなので、新しくダウンロードしてやってみます。

$ cd www/test/
$ mkdir yahoo_sreg
$ cd yahoo_sreg/
$ wget "http://openidenabled.com/files/php-openid/packages/php-openid-2.1.2.zip"
$ ls
php-openid-2.1.2.zip
$ unzip php-openid-2.1.2.zip
$ cd php-openid-2.1.2/examples/consumer/

これだけで動くのではないでしょうか?
http://r-weblife.sakura.ne.jp/test/yahoo_sreg/php-openid-2.1.2/examples/consumer/
ここで、OpenID入力フォームに「yahoo.com」を入力すると、Yahoo!OpenIDを使えます。

あれ?サンプルコードではDefaultでSregの要求が含まれているのにあっさりとYahoo!に無視されて普通のOpenID認証画面ですね。

&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1
&openid.sreg.required=nickname
&openid.sreg.optional=fullname%2Cemail

YDNのForumでこんなの見つけました。

また、YDNの記事でこんなの見つけました。

あ、本対応というよりはWhiteList形式のTestのようでした。
Yahoo! JAPANは?Discoveryしてみても対応している気配なし。