2010-08-02 92 views
2

我有以下代碼:DotNetOpenAuth和谷歌

protected void Page_Load(object sender, EventArgs e) 
{ 
    var openId = new OpenIdRelyingParty(); 
    HttpContext httpContext = HttpContext.Current; 

    var headers = new WebHeaderCollection(); 
    foreach (string header in httpContext.Request.Headers) 
    { 
     headers.Add(header, httpContext.Request.Headers[header]); 
    } 

    string requestUrl = string.Format("http://localhost:12345/Login/{0}", 
             httpContext.Request.Url.Query); 

    var requestInfo = new HttpRequestInfo(httpContext.Request.HttpMethod, 
              new Uri(requestUrl), 
              httpContext.Request.RawUrl, headers, 
              httpContext.Request.InputStream); 

    var response = openId.GetResponse(requestInfo); 

    if (response != null) 
    { 
     ClaimsResponse claimResponse = response.GetExtension<ClaimsResponse>(); 
     lblUser.Text = claimResponse.FullName; 
     if (response.Exception != null) 
     { 
      lblError.Text = response.Exception.Message; 
     } 
    } 
} 

protected void btnTest_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     using (OpenIdRelyingParty openId = new OpenIdRelyingParty()) 
     { 
      string identifier = @"https://www.google.com/accounts/o8/id"; 


      var request = openId.CreateRequest(identifier, 
               new Realm("http://localhost:12345/"), 
               new Uri("http://localhost:12345/Login/")); 

      request.AddExtension(new ClaimsRequest 
             { 
              Email = DemandLevel.Require 
             }); 

      request.RedirectToProvider(); 
     } 
    } 
    catch (Exception ex) 
    { 
     // TODO: log exception 
     throw; 
    } 
} 

當我執行的代碼,用戶進行身份驗證,但ClaimsResponse爲空。
代碼適用於MyOpenId

任何幫助,將不勝感激。

+0

這個問題是其他幾個問題的重複。在發佈新問題之前,請搜索http://stackoverflow.com/search?q=claimsresponse。 – 2010-08-02 13:23:13

+0

我在發佈這個問題之前使用了搜索。 ClaimsReposnse僅在與Google合作時才返回null。在其他主題中,ClaimsReposnse始終爲空。 – 2010-08-02 13:59:56

+0

這不是唯一的。有些人只是將它視爲「始終爲空」,即使它們只用Google進行測試。 – 2010-08-02 14:15:23

回答

0

這裏的信息是有用的:Retrieve OpenId User Information (Claims) across providers

金塊你在你的應用程序可能缺少的是AXFetchAsSregTransform

+0

不能讓它工作:( 你可以編輯我的代碼並添加缺少的部分嗎? – 2010-08-02 14:35:01

+0

沒有什麼是你的代碼可以告訴我的錯誤。我給你的「gold nugget」鏈接帶你到web頁面中有一段代碼添加到你的web.config文件中,你試過了嗎? – 2010-08-02 14:58:44

+0

它在編輯web.config後就可以使用了,謝謝。 – 2010-08-03 07:57:31