Sto usando DotNetOpenAuth per integrare openID nella nostra applicazione web. Il codice seguente richiede le informazioni al provider.Perché le informazioni sull'utente openID non vengono fornite tramite il protocollo?
try
{
var req = openid.CreateRequest(Request.Form["openid_identifier"]);
req.AddExtension(new DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.ClaimsRequest
{
Email = DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.DemandLevel.Require,
FullName = DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.DemandLevel.Require,
Nickname = DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.DemandLevel.Request,
PostalCode = DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.DemandLevel.Request
});
return req.RedirectingResponse.AsActionResult();
}
Per qualche motivo la risposta dal provider openID non viene mai fornita con le informazioni che sto richiedendo. Di seguito è riportato il codice:
// Stage 3: OpenID Provider sending assertion response
switch (response.Status) {
case AuthenticationStatus.Authenticated:
Session["FriendlyIdentifier"] = response.FriendlyIdentifierForDisplay;
FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false);
if (!string.IsNullOrEmpty(returnUrl)) {
return Redirect(returnUrl);
} else {
return RedirectToAction("Index", "Home");
}
ho provato: response.ClaimedIdentifier in un milione di modi e non è mai preziose informazioni che io possa fare qualcosa con. Qualche idea?
Ciao Andrew: Grazie mille, funziona. Google restituisce l'e-mail, Yahoo non lo fa. Apprezzo il vostro aiuto. – Geo
Yahoo dovrebbe essere ora ... hanno appena aggiornato per supportarlo. –