Yahoo! OpenID未包含属性交换信息(使用python-openid)
我正在使用python-openid成功地将我的Python网站与OpenID连接。它在Google上运行得很好,也能在Yahoo!上使用,但在Yahoo!上,属性交换似乎不起作用。我只得到电子邮件地址,而名字、姓氏和国家总是为空。我知道这个Yahoo!账户(通过那个电子邮件地址)是有名字和姓氏的。
我在正常的OpenID参数中使用了这些参数:
'openid.ns.ax':'http://openid.net/srv/ax/1.0',
'openid.ax.mode':'fetch_request',
'openid.ax.required':'firstname,lastname,email,country',
'openid.ax.type.firstname':'http://axschema.org/namePerson/first',
'openid.ax.type.lastname':'http://axschema.org/namePerson/last',
'openid.ax.type.email':'http://axschema.org/contact/email',
'openid.ax.type.country':'http://axschema.org/contact/country/home',
我在搜索时发现了这个答案,但我对PHP框架不太熟悉,也不太明白它的“counts”是怎么回事。在python-openid框架中没有这样的东西。
1 个回答
2
迟到总比不到好吧。我刚刚在用Perl测试这个东西,使用的是Net::OpenID::Consumer这个包,遇到了类似的问题。我首先发现,雅虎并不提供名字和姓氏的信息,反而需要定义另一种类型,指向一个叫做http://axschema.org/namePerson的axschema类型。你还可以请求他们的媒体图片,但名字和姓氏永远无法获取。
雅虎的openid属性交换的文档在这里(我觉得写得很糟糕,但同时,开发者需要知道如何定义类型并指向正确的模式值):http://developer.yahoo.com/blogs/ydn/posts/2009/12/yahoo_openid_now_with_attribute_exchange/。
这和谷歌的情况不同,谷歌可以请求的值包括国家、邮箱、名字、姓氏和语言,文档写得更清楚,可以在这里找到:http://code.google.com/apis/accounts/docs/OpenID.html。
考虑到这些差异,可能需要为每个提供商提供不同的返回网址。我没有列出MyOpenID的属性,因为我还没有测试过。