2009-10-21 8 views
4

Je cours dotnetopenauth 3.3.0.9283 (nightly build), il fonctionne très bien et il a résolu mon problème précédent (DotNetOpenAuth get email and redirect problem)DotNetOpenAuth obtenir email

Alors maintenant, je suis en mesure d'obtenir les utilisateurs de gmail email uniquement! J'ai essayé yahoo et myspace mais j'ai toujours "La référence d'objet n'est pas définie sur une instance d'un objet." J'ai couru l'échantillon qui est venu avec la construction, ajaxlogin.aspx et loginProgrammatic.aspx ils me donnent tous les deux le même message d'erreur.

c'est la seule ligne i ajoutée à l'échantillon (et le courrier électronique également réglé nécessaire)

var email = OpenIdAjaxTextBox1.AuthenticationResponse.GetExtension<ClaimsResponse>().Email; 

Répondre

7

Vous avez trop de code sur une ligne.

GetExtension<T>() renvoie null si le fournisseur n'inclut pas réellement cette extension dans la réponse. Vous devez donc toujours vérifier qu'il renvoie une valeur non nulle avant de le déréférencer.

Vous récupérez null de Yahoo parce qu'ils ne supportent pas (encore) de donner des informations supplémentaires à leurs utilisateurs à l'exception d'une petite liste blanche de RPs.

Je ne connais pas MySpace, mais je suppose qu'ils ne le supportent pas non plus.

+0

merci encore Andrew, j'ai essayé d'autres fournisseurs et j'ai réussi à obtenir l'email de certains d'entre eux. Et j'ai aussi demandé à yahoo de me mettre sur la liste blanche, hop ils le font. Merci encore :) – Murre

+0

Comment puis-je savoir qu'un fournisseur donné ne fournit pas certaines informations? – LuRsT

+1

LuRsT, il est impossible de savoir avec certitude à l'avance. Mais si vous demandez l'information, vous n'avez qu'à la vérifier dans la réponse, comme je le dis dans ma réponse. –