2013-02-22 19 views
7

के दौरान DotNetOpenAuth.WebServerClient.XSRF-सत्र परिवर्तन मैं एक साधारण Oauth2 लॉगिन प्रमाणीकरण सेट करने का प्रयास कर रहा हूं। हालांकि मैं कॉलबैक कि निम्न अपवाद फेंकता पर अटक कर रहा हूँ:कॉलबैक

[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 

ठीक उसी समस्या here

अधिक चर्चा की है मेरे मामले में SessionID ही रहता है, लेकिन DotNetOpenAuth.WebServerClient.XSRF- सत्र कुकी कॉलबैक पर इसका मूल्य बदलती है।

कार्यान्वयन:

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

उत्तर

0

आप लगातार अपने कुकी के रूप में नीचे की तरह, की घोषणा की है:

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

यह भी कॉलबैक में मूल्य बनाए रखने के लिए मदद मिलेगी।