2010-12-15 42 views
1

This code montre comment utiliser l'échange d'attributs avec DotNetOpenAuth. Mais que se passe-t-il si j'ai mon propre fournisseur fermé et que vous voulez utiliser des attributs personnalisés, par exemple l'attribut FavoriteFlavor défini dans le AcmeRequest dans les échantillons DNOA; Que dois-je faire avec DNOA pour faire la demande ressembler à quelque chose comme (mais pour ma demande FavoriteFlavor):Comment utiliser l'attribut FavoriteFlavor dans DotNetOpenAuth Attribute Exchange

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 

tel que défini dans http://blogs.gnome.org/jamesh/2007/11/26/openid-ax/:

+0

Je vois que votre question a une réponse. Mais pour clarifier les autres, la classe 'AcmeRequest' est un exemple d'extension OpenID personnalisée, alors que ce que vous cherchez ici est un attribut personnalisé dans AX. Il est beaucoup plus facile d'utiliser un attribut personnalisé dans AX que d'écrire votre propre extension OpenID. –

Répondre

2

Je ne suis pas sûr que vous devez faire la La requête OpenID ressemble exactement à ceci lorsque vous construisez votre propre fournisseur OpenID.

Vous avez seulement besoin d'utiliser Fetch and Store (si vous voulez permettre l'enregistrement des données), les demandes et les réponses et c'est très simple.

IAuthenticationRequest request) 

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

request.AddExtension(ax); 

Sur le fournisseur OpendID vous devez attraper cette demande et créer 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); 

Gardez à l'esprit que ce sont juste une sorte d'étapes supplémentaires nécessaires à l'extension Attribute Exchange.

+0

Merci Robert, c'est très utile et m'a rapproché de ce que je veux accomplir. J'ai encore [questions sur l'exemple Acme] (http://groups.google.com/group/dotnetopenid/browse_thread/thread/a9ed4db2a36a75ad) que, espérons-le, Andrew ramassera. Merci encore. – Confused

+0

[Ce message sur weblogs] (http://weblogs.asp.net/jdanforth/archive/2008/07/11/fetching-user-details-from-openid-via-attribute-exchange.aspx) est également utile. – Confused