2010-12-15 1 views
1

This code показывает, как использовать обмен атрибутами с DotNetOpenAuth.Как использовать атрибут FavoriteFlavor в DotNetOpenAuth Атрибут Exchange

Но что, если у меня есть собственный Закрытый Поставщик и вы хотите использовать настраиваемые атрибуты, например атрибут FavoriteFlavor, определенный в AcmeRequest как часть образцов DNOA; что я должен делать с DNOA, чтобы сделать запрос выглядеть что-то вроде (но для моей просьбе FavoriteFlavor):

openid.ns.ax=http://openid.net/srv/ax/1.0 
openid.ax.mode=fetch_request 
openid.ax.required=name,hackergotchi 
openid.ax.if_available=email,web 
openid.ax.type.name=http://axschema.org/namePerson 
openid.ax.type.email=http://axschema.org/contact/email 
openid.ax.type.hackergotchi=http://axschema.org/media/image/default 
openid.ax.type.web=http://axschema.org/contact/web/default 

, как это определено в http://blogs.gnome.org/jamesh/2007/11/26/openid-ax/:

+0

Я вижу, что на ваш вопрос ответили. Но чтобы помочь прояснить для других, класс `AcmeRequest` является образцом пользовательского расширения OpenID, в то время как то, что вы ищете здесь, является настраиваемым атрибутом в AX. Гораздо проще использовать пользовательский атрибут в AX, чем писать собственное расширение OpenID. – 2010-12-18 01:32:52

ответ

2

Я не уверен, что вам нужно сделать Запрос OpenID выглядит именно так, когда вы создаете свой собственный поставщик OpenID.

Вам нужно всего лишь использовать запросы Fetch и Store (если вы хотите разрешить сохранение данных) и ответ, и это очень просто.

IAuthenticationRequest request) 

var ax = new FetchRequest(); 
ax.Attributes.AddRequired("http://axschema.org/contact/email"); 
ax.Attributes.AddRequired("http://axschema.org/namePerson"); 

request.AddExtension(ax); 

На провайдера OpendID вы должны поймать этот запрос и создать FetchResponse

var fetchRequest = pendingRequest.GetExtension<FetchRequest>(); 

var fetchResponse = new FetchResponse(); 
fetchResponse.Attributes.Add("http://axschema.org/contact/email", "[email protected]"); 
fetchResponse.Attributes.Add("http://axschema.org/namePerson", "John"); 

pendingRequest.AddResponseExtension(fetchResponse); 

Имейте в виду, что это всего лишь своего рода дополнительные шаги, необходимые для расширения атрибутов Exchange.

+0

Спасибо, Роберт, это очень полезно и приблизило меня к тому, чего я хочу достичь. У меня есть еще [вопросы по примеру Acme] (http://groups.google.com/group/dotnetopenid/browse_thread/thread/a9ed4db2a36a75ad), которые, как мы надеемся, заберем Андрей. Еще раз спасибо. – Confused 2010-12-16 10:38:58