Was ist das Geheimnis, wenn ClaimsResponse mit DotNetOpenId funktioniert?
Zum Beispiel in diesem Codebeispiel (aus Scott Hanselmans Blog ) das ClaimsResponse-Objekt sollte viele nette kleine Dinge wie 'Nickname' und 'E-Mail-Adresse' haben, aber das ClaimsResponse-Objekt selbst ist 'null':
%Vor%Zuerst dachte ich, dass es daran lag, dass ich nicht mit einem 'ClaimsRequest' zum Provider weitergeleitet habe, aber die Verwendung dieses Codes zur Weiterleitung an den OpenId-Provider hilft immer noch nicht:
%Vor%Was mache ich falsch? Oder haben andere Entwickler den gleichen Schmerz erfahren?
Ihr Code sieht gut aus. Beachten Sie jedoch, dass die von Ihnen verwendete Sreg-Erweiterung nicht von allen OPs unterstützt wird. Wenn das OP, mit dem Sie sich authentifizieren, dies nicht unterstützt, ist die Antworterweiterung, wie Sie sehen, null. Ein Null-Check ist also immer eine gute Idee.
myopenid.com unterstützt sreg, wenn Sie nach einem OP suchen, gegen das getestet werden kann.
Ich weiß nicht, ob Sie das Problem gelöst haben oder nicht, aber ich fand die Lösung nach vielen Stunden des Kampfes. Eigentlich müssen Sie Ihre web.config-Datei ändern, um E-Mail und Fullname zu beanspruchen hier ist web.config was für mich funktioniert. Ich habe es vom nerddinner-Projekt heruntergeladen. Eigentlich habe ich alles außer web.config kopiert und ich bekam das email Feld nicht. Später fand ich etwas anderes falsch. Ich habe web.config vom nerddinner-Projekt kopiert und alles hat funktioniert.
Hier ist die Datei, wenn Sie nicht zum nerddinner Projekt gehen wollen.
%Vor%Ich habe
benutzt %Vor%statt
%Vor%Und in der Antwort versuchen
%Vor%einfach, anstatt auf die Ansprüche zuzugreifen. Das hat bei mir im ASP.Net für Google funktioniert.
Das Problem in ASP.Net ist, dass die Anforderung nicht vollständig gesendet wird, wenn Sie ClaimsRequest verwenden, wenn Sie Fiddler verwenden. und die Antwort wird auch nicht korrekt abgerufen, Sie müssen auf direkte Parameter von Request.params zugreifen, die alle dort sind.
Keine der oben genannten Funktionen funktionierte für mich (mit PayPal Access als Kennung) in C #
Das Folgende funktionierte für mich:
%Vor%Tags und Links .net asp.net security dotnetopenauth openid