Yahoo! OpenID не включает информацию об атрибутах Exchange (используется python-openid)
Я использую python-openid для успешного подключения моего сайта на Python с OpenID. Он отлично работает с Google и Yahoo! но с Yahoo! Атрибут Exchange не работает. Я только получаю адрес электронной почты. имя, фамилия и страна всегда пустые. Я знаю 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 и его использованием "count". В среде python-openid такого нет.
1 ответ
Возможно, лучше поздно, чем никогда. Я только что тестировал то же самое в Perl, используя пакет Net::OpenID::Consumer, и у меня были похожие проблемы. Сначала я обнаружил, что имя и фамилия недоступны в Yahoo, вместо этого вы должны определить другой тип, указывающий на тип axschema http://axschema.org/namePerson, и вы также можете запросить их медиа-образ, но имя и фамилия никогда не работать.
Документация по обмену атрибутами opena в yahoo находится здесь (и это ужасно, ИМХО, но в то же время разработчик должен знать, как определять типы и указывать им правильные значения схемы): 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, потому что я еще не проверял это.