OpenID: tratar de quedar dirección de correo de Google OP
-
18-09-2019 - |
Pregunta
Estoy usando dotnetopenauth 3.2 para implementar OpenID y no puedo encontrar la manera de hacer que Google pase a la dirección de correo electrónico en la Respuesta de Reclamaciones. Sé que Google no admite registro simple, pero no puedo determinar lo que ellos apoyan.
advertencia a esta pregunta es que acabo de comenzar el aprendizaje de OpenID y sé que no tengo un conocimiento sólido de la especificación que creo que está dando lugar a mi confusión.
Cualquier ayuda se agradece!
Solución
Ok lo descubrió. He publicado una pregunta sobre de Goolge y me dijeron que usar atributo de cambio .
A continuación se muestra el código para DotNetOpenAuth .
Por favor, no utilice este código en la 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;
}
...
}
}
Otros consejos
Cuando intento de obtener el nombre completo de la respuesta es nula, por favor proporcionar una solución para obtener el nombre completo, Este post está realmente ayudar a ful Gracias. Mi código de ejemplo como éste.
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);
}