2011-04-28 86 views
6

我无法获得GetExtension方法返回的电子邮件地址,但它包含在Google(我正在测试的OP)发回给我的网址中。使用DotNetOpenAuth从OpenID Provider获取电子邮件地址

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; 
      } 
     } 
    } 
} 

任何人都知道什么是错的?

+0

“但它包含在Google的网址中“......看起来你的问题有一部分缺失。请注意修改? – joce 2011-04-28 05:47:37

+0

已修复。谢谢.. – Carol 2011-04-28 06:51:33

回答

6

尝试以下代码:

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; 
    //... 
} 
+0

这就是我在我的代码,但response.GetExtension ()总是返回null – Carol 2011-04-28 17:08:23

+0

你是正确的..我使用FetchRequest而不是FetchResponse ..谢谢! – Carol 2011-04-28 18:42:24

+0

@卡罗尔:很高兴解决。 – Kamyar 2011-04-30 05:13:36

2

的用于我的(通过PayPal Access作为标识符)C#中的上述工作无

下为我工作:

OpenIdRelyingParty openid = new OpenIdRelyingParty(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     var response = openid.GetResponse(); 

     if (response != null) 
     { 
      switch (response.Status) 
      { 
       case AuthenticationStatus.Authenticated: 

        if (this.Request.Params["openid.ext1.value.alias1"] != null) 
        { 
         Response.Write(this.Request.Params["openid.ext1.value.alias1"]); 
         Response.Write(this.Request.Params["openid.ext1.value.alias2"]); 
        } 
        else { 
         Response.Write("Alias wrong"); 
        } 
        break; 
      } 
     } 
    } 
    protected void loginButton_Click(object sender, EventArgs e) 
    { 

     var openidRequest = openid.CreateRequest(openIdBox.Text); 
     var fetch = new FetchRequest(); 

     fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); 
     fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName); 
     openidRequest.AddExtension(fetch); 

     openidRequest.RedirectToProvider(); 

    } 
+0

ty这也适用于我:) – 2014-06-30 18:22:21

相关问题