本文介绍了获取电子邮件地址从OpenID提供与DotNetOpenAuth的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不能在 GetExtension
法的电子邮件地址返回,但它包含在谷歌(我与测试OP)发回的url我的。
I can't get the email address returned in GetExtension
method, but it is included in the url that Google (the OP I'm testing with) sends back to me.
if (Page.IsPostBack)
{
using (var openid = new OpenIdRelyingParty())
{
var request = openid.CreateRequest(Request.Form["openid_identifier"]);
var fetch = new FetchRequest();
fetch.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email, true));
request.AddExtension(fetch);
request.RedirectToProvider();
}
}
else
{
using (var openid = new OpenIdRelyingParty())
{
var response = openid.GetResponse();
if (response != null)
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
var claimsResponse = response.GetExtension<FetchRequest>();
break;
case AuthenticationStatus.Canceled:
//this.loginCanceledLabel.Visible = true;
break;
case AuthenticationStatus.SetupRequired:
//this.loginFailedLabel.Visible = true;
break;
// We don't need to handle SetupRequired because we're not setting
// IAuthenticationRequest.Mode to immediate mode.
////case AuthenticationStatus.SetupRequired:
//// break;
}
}
}
}
任何人都知道出了什么问题?
Anyone knows what's wrong?
推荐答案
请尝试以下code:
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
var fetch = response.GetExtension<FetchResponse>();
string email = String.Empty;
if (fetch != null)
{
email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
}
break;
//...
}
这篇关于获取电子邮件地址从OpenID提供与DotNetOpenAuth的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!