我正在使用python-openid成功地将我的基于python的站点连接到OpenID。它在Google上工作得很好,在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',搜索我找到了this answer,但是我不熟悉PHP框架和它对"counts“的用法。在python-openid框架中没有这样的东西。
发布于 2011-04-05 04:44:49
也许,迟到总比不到好。我刚刚使用Net::OpenID::Consumer包在Perl中测试了同样的东西,并且遇到了类似的问题。我首先发现名和姓不能从yahoo获得,相反,你必须定义另一个指向axschema类型http://axschema.org/namePerson的类型,你也可以请求他们的媒体镜像,但是名字和姓氏永远不会起作用。
yahoo的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
考虑到这些差异,为每个列出的提供商提供不同的返回urls可能是谨慎的做法。我还没有列出MyOpenID的属性,因为到目前为止我还没有测试它。
https://stackoverflow.com/questions/2664127
复制相似问题