2009-02-27 13 views
6

ich OpenID bin Umsetzung, und ich möchte die E-Mail-Adresse des Benutzers abzurufen und andere Informationen über den Benutzer, mache ich das:anfordern E-Mail-Adresse von OpenID-Provider

var fetch = new FetchRequest(); 
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email)); 
request.AddExtension(fetch); 

Aber der Anbieter nicht alles zurückgeben. Ich verwende DotNetOpenID

Was mache ich falsch?

danke!

EDIT:

Wenn ich versuche, bei http://www.plaxo.com/ mit myOpenID oder Google zu registrieren, um sie sagen beide plaxo zusätzliche Informationen anfordert, aber wenn ich meine Website testen sie sagt nichts ...

Antwort

6

Wie Martin sagte, es kommt auf den Provider an.

MyOpenID tut AttributeExchange nicht, denke ich. Sie tun sreg (Einfache Registrierung) obwohl, also fügen Sie eine ClaimsRequest Erweiterung zu Ihrer Anfrage hinzu und Sie erhalten eine ClaimsResponse zurück von einigen Anbietern.

Google macht nur AttributeExchange und stellt nur eine E-Mail-Adresse zur Verfügung. Das einzige, was Ihnen in Ihrem Code fehlt, ist, dass Google die E-Mail-Adresse nicht einmal freiwillig zur Verfügung stellt, es sei denn, Sie haben es in Ihrer Anfrage als "Erforderlich" markiert. Fügen Sie dem AttributeRequest-Konstruktor einen ", true" zweiten Parameter hinzu, und dann sollte Google aufleuchten und Ihnen die E-Mail-Adresse der Benutzer geben.

Hier sind einige docs and samples of getting attributes.

+0

Andrew, kannst du bitte diese Antwort mit einem Beispielcode von C# oder einem Link zu einem Blogpost/Website-Tutorial mit Code bearbeiten? –

+0

Danke, ich habe Google funktioniert jetzt, dass ich AX – gravitation

+0

Pure.Krome hinzugefügt habe, habe ich einen Link wie gewünscht hinzugefügt. –

1

Vielleicht machen Sie nichts falsch - der Provider unterstützt die Anfrage möglicherweise nicht oder entscheidet sich, die angeforderten Informationen nicht zu senden. nicht, dass die Erweiterung unterstützt

http://blog.nerdbank.net/2008/07/how-to-use-dotnetopenid-attribute.html „Wie bei allen OpenID-Erweiterungen, lediglich eine Anfrage mit einer Verlängerung in dem Senden nicht garantiert, dass der Anbieter wieder eine Antwort auf diese Erweiterung senden. Der Anbieter, oder wählen Sie kann nicht senden Sie eine Antwort. "