varios smtpexception remoto puede nombre net mvc mail google error enviar destinatarios desde correo c# openid dotnetopenauth

c# - smtpexception - no se puede resolver el nombre remoto smtp hotmail com



OpenID: tratando de obtener la dirección de correo electrónico de Google OP (2)

Estoy usando dotnetopenauth 3.2 para implementar Openid y no puedo encontrar la manera de hacer que Google pase la dirección de correo electrónico en la respuesta de reclamos. Sé que Google no es compatible con el registro simple, pero no puedo determinar lo que admiten.

La advertencia a esta pregunta es que acabo de empezar a aprender OpenID y sé que no tengo una comprensión sólida de la especificación, lo que creo que me lleva a la confusión.

¡Cualquier ayuda sería apreciada!


Cuando trato de obtener el nombre completo, la respuesta es nula; proporcione una solución para obtener el nombre completo. Esta publicación es realmente útil. Gracias. Mi ejemplo de código así.

var fetch = new FetchRequest(); fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName); fetch.Attributes.AddRequired(WellKnownAttributes.Company.CompanyName); //fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); request.AddExtension(fetch);

Y

if (fetch != null) { email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email); name = fetch.GetAttributeValue(WellKnownAttributes.Name.FullName); company = fetch.GetAttributeValue(WellKnownAttributes.Company.CompanyName); }


Ok lo descubrí. Publiqué una pregunta en el grupo de la API de registro federado de Goolge y se me dijo que utilizara el intercambio de atributos .

Debajo está el código para DotNetOpenAuth .

Por favor, no use este código en producción. ¡Esto es sólo para fines ilustrativos!

La solicitud:

using (OpenIdRelyingParty openid = new OpenIdRelyingParty()) { IAuthenticationRequest request = openid.CreateRequest(openidurl); var fetch = new FetchRequest(); fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); request.AddExtension(fetch); // Send your visitor to their Provider for authentication. request.RedirectToProvider(); }

La respuesta:

OpenIdRelyingParty openid = new OpenIdRelyingParty(); var response = openid.GetResponse(); if (response != null) { switch (response.Status) { case AuthenticationStatus.Authenticated: { var fetch = response.GetExtension<FetchResponse>(); string email = string.Empty(); if (fetch != null) { email = fetch.GetAttributeValue( WellKnownAttributes.Contact.Email); } FormsAuthentication.RedirectFromLoginPage( response.ClaimedIdentifier, false); break; } ... } }