2012-01-05 3 views
2

페이스 북 API를 사용하여 로그인하는 사이트가 있습니다. 우리는 JS SDK와 C# SDK를 사용하고 있습니다.서명 된 요청이 잘못되었습니다.

저희 사이트는 약 한 달 동안 잘 작동하고있다

하지만 지난 밤에 사람들은

이 또한 베타 테스트 기간 동안 한 번 일어났다. 그들이 로그인 할 때 빈 페이지를 시작하기 그러나 우리는 그것이 생각하기 때문에 우리가했던 일부 변경 페이스 북 로그인 과정에서 쿠키를 삭제 한 후에 사라졌습니다. 하지만 지금은 다시 발생하고 내 사용자에게 쿠키를 삭제하도록 요청할 수 없습니다. (일부 브라우저는 브라우저를 다시 시작하여 도움을주는 것처럼 보이지만 여전히 매우 성가신 듯합니다.)

내 오류 로그에 다음과 같은 오류가 있습니다.

System.InvalidOperationException: Invalid signed request. 
    at Facebook.FacebookSignedRequest.TryParse(String secret, String signedRequestValue, Int32 maxAge, Double currentTime, Boolean throws) 
    at Facebook.FacebookSignedRequest.Parse(String secret, String signedRequestValue) 
    at Facebook.FacebookSignedRequest.GetSignedRequest(String appId, String appSecret, HttpContextBase httpContext) 
    at Facebook.FacebookSession.GetSession(String appId, String appSecret, HttpContextBase httpContext, FacebookSignedRequest signedRequest) 
    at Facebook.Web.FacebookWebContext.get_Session() 
    at Facebook.Web.FacebookWebContext.IsAuthenticated() 
    at Facebook.Web.FacebookWebContext.IsAuthorized(String[] permissions) 
    at Facebook.Web.Mvc.FacebookAuthorizeAttribute.OnAuthorization(AuthorizationContext filterContext, IFacebookApplication facebookApplication) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 
    at System.Web.Mvc.Controller.ExecuteCore() 
    at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) 
    at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5() 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0() 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

이상한 것은 내가 한 달 정도 및 페이지 일상에서 로그 아웃했습니다 동시에 여러 사용자를 위해 밤 동안 일어난 것입니다 오늘 난 그냥 얻을 : 다음과 같다 빈 페이지이며이 오류가 로그에 표시됩니다.

분명히 쿠키와 관련이 있거나 세션을 잃는 것처럼 보입니다. 페이스 북에서 로그 아웃하지 않은 사용자, 로그인 상태를 유지 한 다음 나중에 다시 돌아와서 세션을 잃어 버린 사용자에게 발생하는 것으로 보입니다. 다시 로그인하면 다시 작동하지 않습니다. 나는 그것을 100 % 확인할 수는 없지만 실제 사이트를 브라우저에서 열어 놓고 컴퓨터를 잠자기 모드로 전환 한 다음 그 다음날 사이트 탐색을 시작하는 많은 사람들에게 오류가 발생하는 것처럼 보입니다. 다시 빈 페이지가 생겨서 로그인 페이지로 이동하여 로그인하려고 시도하지만 로그인 한 후에 빈 페이지를 다시 얻습니다.

그렇다면 오류의 원인은 무엇이라고 말할 수 있지만, 왜 모든 사람이 같은 날에 누군가에게 일어나지 않는가? 그건 나에게 의미가 없다.

가입은 JS는 다음과 같습니다

<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'XXXXXXXXXXXX', 
     channelUrl: 'http://www.xxxxxx.com/channel.html', 
     status: true, // check login status 
     cookie: true, // enable cookies to allow the server to access the session 
     oauth: true, // enable OAuth 2.0 
     xfbml: true // parse XFBML 
    }); 

    // Run js that is dependent on the Facebook session 
    initFacebook(); 

    FB.Canvas.setAutoResize(); 

}; 

// Load the SDK Asynchronously 
(function (d) { 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; } 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
} (document)); 
</script> 

어떤 도움도 대단히 감사하겠습니다!

+0

당신이 공식 C#을 SDK를 사용하고 (이는 [사용되지 않는 (http://developers.facebook.com/blog/post/624/)) 또는 [codeplex에서 호스팅되는 opensource C# SDK] (http://facebooksdk.codeplex.com/)? –

+0

Codeplex에서 호스팅되는 것을 사용하고 있습니다 (NuGet을 통해). –

답변

0

Facebook C# SDK에서 쿠키 구문 분석에 대한 지원을 중단합니다. Facebook은 더 이상 개발자 나 SDK가 쿠키를 직접 읽으려고하지 않습니다. 가까운 장래에 Facebook C# SDK 문서 (http://docs.csharpsdk.org)에서 더 많은 설명서와 지침을 제공 할 것입니다.

여기 쿠키를 사용하지 않는 페이스 북의 추천에 대한 세부 사항을 참조하십시오 https://developers.facebook.com/blog/post/624/

관련 문제