2013-02-22 32 views
7

Tôi đang cố thiết lập xác thực đăng nhập Oauth2 đơn giản. Tuy nhiên tôi đang bị mắc kẹt tại các callback mà ném ngoại lệ sau đây:Thay đổi DotNetOpenAuth.WebServerClient.XSRF-Session trong khi gọi lại

[ProtocolException: Unexpected OAuth authorization response received with callback and client state that does not match an expected value.] 
    DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String unformattedMessage, Object[] args) +426 
    DotNetOpenAuth.OAuth2.WebServerClient.ProcessUserAuthorization(HttpRequestBase request) +771 

Cùng vấn đề chính xác được thảo luận qua here

Trong trường hợp của tôi SessionID vẫn giữ nguyên, nhưng DotNetOpenAuth.WebServerClient.XSRF- Cookie phiên thay đổi giá trị của nó tại cuộc gọi lại.

Thực hiện:

public void Authorize(HttpRequest request) 
    { 
     string callbackString = request.Url.AbsoluteUri; 
     Uri callbackUri = new Uri(callbackString);; 

     IAuthorizationState authorization = nimbleClient.ProcessUserAuthorization(); 

     if (authorization == null) 
     { 
      // Kick off authorization request 
      nimbleClient.RequestUserAuthorization(returnTo: callbackUri); 
     } 
     else 
     { 
      //Get AccesToken 
      Uri.EscapeDataString(authorization.AccessToken); 
     } 

Trả lời

0

Bạn đã tuyên bố cookie của bạn như không đổi, như dưới đây:

private const string XsrfCookieName = "DotNetOpenAuth.WebServerClient.XSRF-Session" 

này sẽ giúp duy trì giá trị ngay cả ở callback.