2

我正在使用 python-openid 成功地将我的基于 python 的站点与 OpenID 连接起来。它适用于谷歌,它适用于雅虎!但与雅虎!属性交换似乎不起作用。我只得到电子邮件地址。名字、姓氏和国家始终为空白。我知道雅虎!帐户(通过该电子邮件地址)定义了名字和姓氏。

我在普通的 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 框架及其对“计数”的使用。python-openid 框架中没有这样的东西。

4

1 回答 1

2

也许迟到总比没有好。我只是在 Perl 中使用 Net::OpenID::Consumer 包测试同样的东西,并且遇到了类似的问题。我首先发现雅虎不提供名字和姓氏,而是您必须定义另一个指向 axschema 类型的类型http://axschema.org/namePerson,您也可以请求他们的媒体图像,但名字和姓氏会从不工作。

雅虎的 openid 属性交换的文档在这里(这很糟糕,恕我直言,但同时,开发人员需要知道如何定义类型并将它们指向正确的模式值):http://developer .yahoo.com/blogs/ydn/posts/2009/12/yahoo_openid_now_with_attribute_exchange/

这与 google 不同,您可以请求的值是国家、电子邮件、名字、姓氏和语言,这里有更好的记录:http ://code.google.com/apis/accounts/docs/OpenID.html

考虑到这些差异,为列出的每个提供商提供不同的返回 URL 可能是谨慎的。我没有列出 MyOpenID 的属性,因为我还没有测试过它。

于 2011-04-04T20:44:49.087 回答