2011-08-11 30 views
1

我試圖從OpenID提供程序獲取至少一封電子郵件時擴展了DotNetOpenAuth ASP.NET MVC Login示例。無論使用哪家供應商登錄,我都會收到nullClaimsResponse。這是代碼。使用DotNetOpenAuth成功的OpenID登錄沒有電子郵件返回ASP.NET MVC登錄示例

var request = openid.CreateRequest(Request.Form["OpenID"]); 
// Require some additional data 
request.AddExtension(new ClaimsRequest 
          { 
           Email = DemandLevel.Require, 
          }); 
return request.RedirectingResponse.AsActionResult(); 

這是片段,以獲得ClaimsResponse

switch (response.Status) 
{ 
    case AuthenticationStatus.Authenticated: 
     var claimsResponse = response.GetExtension<ClaimsResponse>(); 
     // This is null! 
     break; 
} 

前嘗試這種對MVC樣品,我已經做的WebForms樣品相同和回來請求的電子郵件!但是,由於OpenID相關的代碼幾乎是相同的,所以這很難實現。

我注意到生成的OpenID URL在以下方面有所不同:openid.ns.alias3=http://openid.net/srv/ax/1.0&openid.alias3.required=alias1,alias2,alias3,alias4&openid.alias3.mode=fetch_request&openid.alias3.type.alias1=http://axschema.org/contact/email&openid.alias3.count.alias1=1&openid.alias3.type.alias2=http://axschema.org/namePerson&openid.alias3.count.alias2=1&openid.alias3.type.alias3=http://schema.openid.net/contact/email&openid.alias3.count.alias3=1&openid.alias3.type.alias4=http://schema.openid.net/namePerson&openid.alias3.count.alias4=1。基本上,WebForms版本會生成一個包含所有附加內容的URL,而MVC URL缺少此信息。最終結果是電子郵件被呈現給WebForms,而MVC應用程序則沒有。

我注意到的最後一件事是例如Google展示了一個WebForms應用程序的localhost和一個MVC應用程序的127.0.0.1。也許這會造成一切變化。不過,我不確定我是否在這裏控制。

困擾我的事情是,兩個項目的代碼是相同的。仍然生成的URL是不同的,MVC沒有收到電子郵件。

回答

相關問題