2010-08-27 35 views
1

我試圖讓DotNetOpenAuth(最新版本)與ASP.NET MVC 2網站一起使用。 我得到的第一部分工作,當用戶選擇OpenID提供程序時,我會得到正確的標識符傳遞,然後我被正確地重定向到提供商網站,我被重定向回到我的網站,但這是問題。null在ASP.NET MVC 2應用程序中使用DotNetOpenAuth ClaimsResponse

我要求的索賠爲空(參見下面的代碼)。

public ActionResult TryAuth(string openid_identifier) 
{ 
    var openid = new OpenIdRelyingParty(); 
    var response = openid.GetResponse(); 
    if(response== null) 
    { 
     var req = openid.CreateRequest(openid_identifier); 
     req.AddExtension(new ClaimsRequest 
          { 
           Email = DemandLevel.Require, 
           Nickname = DemandLevel.Require 
          }); 
     return req.RedirectingResponse.AsActionResult(); 
    } 
    switch(response.Status) 
    { 
     case AuthenticationStatus.Authenticated: 
      { 
       var data = response.GetExtension(typeof(ClaimsResponse)) as ClaimsResponse; 
       // data is null <----------------------------------------- 
       return View("Index"); 
      } 
    } 
    return View("Index"); 
} 

如果有人能指出我所做的(並非如此)明顯的錯誤,我將不勝感激。

回答

3

請翻閱所有類似的問題。 Refer this

你的代碼看起來不錯。儘管在你的web.config文件中確保你使用了activate the AXFetchAsSregTransform,以最大限度地獲得迴歸的機會。儘管供應商可以給你任何屬性。 Yahoo等一些提供商要求您的RP正確實施RP Discovery,這是DotNetOpenAuth提供的示例RP。

這裏是my blog post on getting RP Discovery done right。做到這一點,並嘗試再次測試您的網站。請牢記一些提供商緩存RP發現結果,因此您可能會應用所有RP發現修補程序,並且在提供商開始爲您提供數據之前,仍然需要等待一個小時或一天。

+0

我試圖三家提供商 - myOpenID來說,谷歌和Technorati並且他們都沒有返回任何東西 – 2010-08-27 07:33:12

+0

(我自己並不太喜歡StackOverflow的搜索功能,它需要+關鍵字功能來強制匹配) – 2010-08-27 07:33:17

+0

您是否已經連接了AXFetchAsSregTransform? – 2010-08-27 07:33:52

5

我有同樣的問題,直到我發現了谷歌,你必須設置電子郵件領域DomainLevel.Require而不是DomainLevel.Request(可選)

fields.Email = DemandLevel.Require; 
+0

DemandLevel.Require爲我做了詭計!非常感謝你! – 2012-10-25 19:58:04

相關問題