Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 无效的签名请求_Facebook_Session_Cookies_Facebook C# Sdk_Facebook Login - Fatal编程技术网

Facebook 无效的签名请求

Facebook 无效的签名请求,facebook,session,cookies,facebook-c#-sdk,facebook-login,Facebook,Session,Cookies,Facebook C# Sdk,Facebook Login,我有一个使用Facebook API登录的网站。我们正在使用JSSDK和C#SDK 我们的网站已经正常运行了大约一个月,但昨晚人们登录时开始出现空白页面 这在测试期间也发生过一次,但我们认为这是因为我们在Facebook登录过程中做了一些更改,并且在我们删除cookie后它消失了。但现在这种情况再次发生,我不能要求我的用户删除他们的cookie(对于一些人来说,重新启动浏览器似乎有帮助,但仍然很烦人) 在我的错误日志中,我可以看到如下错误: System.InvalidOperationExce

我有一个使用Facebook API登录的网站。我们正在使用JSSDK和C#SDK

我们的网站已经正常运行了大约一个月,但昨晚人们登录时开始出现空白页面

这在测试期间也发生过一次,但我们认为这是因为我们在Facebook登录过程中做了一些更改,并且在我们删除cookie后它消失了。但现在这种情况再次发生,我不能要求我的用户删除他们的cookie(对于一些人来说,重新启动浏览器似乎有帮助,但仍然很烦人)

在我的错误日志中,我可以看到如下错误:

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)
System.InvalidOperationException:已签名的请求无效。
在Facebook.FacebookSignedRequest.TryParse(字符串机密、字符串signedRequestValue、Int32 maxAge、Double currentTime、布尔抛出)
在Facebook.FacebookSignedRequest.Parse(stringsecret,stringsignedrequestvalue)
在Facebook.FacebookSignedRequest.GetSignedRequest(String appId、String appSecret、HttpContextBase httpContext)
在Facebook.FacebookSession.GetSession(String appId、String appSecret、HttpContextBase httpContext、FacebookSignedRequest signedRequest)
在Facebook.Web.FacebookWebContext.get_Session()上
在Facebook.Web.FacebookWebContext.IsAuthenticated()上
在Facebook.Web.FacebookWebContext.IsAuthorized(字符串[]权限)
在Facebook.Web.Mvc.FaceBookAuthorization.OnAuthorization(授权上下文筛选器上下文,IFacebookApplication facebookApplication)
位于System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext ControllerContext,IList`1 filters,ActionDescriptor ActionDescriptor)
位于System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext ControllerContext,String actionName)
在System.Web.Mvc.Controller.ExecuteCore()上
在System.Web.Mvc.ControllerBase.Execute(RequestContext-RequestContext)中
在System.Web.Mvc.MvcHandler.c_uuudisplayClass6.c_uudisplayClassB.b_uu5()中
在System.Web.Mvc.Async.AsyncResultRapper.c__DisplayClass1.b__0()中
在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)
奇怪的是,这件事在一夜之间同时发生在几个用户身上,我每天都在登录和退出这个页面,大约有一个月了,今天我只得到一个空白页面,这个错误显示在日志中

显然,它看起来与cookie或会话丢失有关。这种情况似乎发生在那些没有退出Facebook的人身上,他们保持登录状态,然后稍后再回来,可能已经失去了会话,而当他们再次登录时,这种情况就不起作用了。我不能百分之百地确认这一点,但似乎很多人在浏览器中打开实际站点,让计算机进入睡眠模式,然后第二天再次开始浏览站点时,他们会看到一个空白页面,因此他们会进入登录页面,尝试登录,但登录后会再次出现空白页

所以你可以说这是导致错误的原因,但为什么它会在同一天发生在每个人身上,而不是偶尔发生在某个人身上?这对我来说没有意义

注册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>

window.fbAsyninit=函数(){
FB.init({
appId:'XXXXXXXXXX',
频道URL:'http://www.xxxxxx.com/channel.html',
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
oauth:true,//启用oauth 2.0
xfbml:true//解析xfbml
});
//运行依赖于Facebook会话的js
initFacebook();
FB.Canvas.setAutoResize();
};
//异步加载SDK
(职能(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);
}(文件);

任何帮助都将不胜感激

这个问题似乎与Facebook的冗余cookie有关。我已经发布了和,其中我解释了问题的原因,并显示了SDK代码中引发异常的确切位置。希望引起一些注意,因为问题相当严重,可能是由于FB的OAuth 2.0实现。

问题似乎与Facebook的冗余cookie有关。我已经发布了和,其中我解释了问题的原因,并显示了SDK代码中引发异常的确切位置。希望引起一些注意,因为问题相当严重,可能是由于FB的OAuth 2.0实现。

我们正在停止在Facebook C#SDK中解析cookie的支持。Facebook不再建议开发者或SDK尝试直接读取cookies。我们将在FacebookC#SDK文档中提供更多关于这方面的文档和指导(http://docs.csharpsdk.org)在不久的将来


请参阅此处有关Facebook建议不使用cookie的详细信息:

我们正在停止Facebook C#SDK中对cookie解析的支持。Facebook不再建议开发者或SDK尝试直接读取cookies。我们将在FacebookC#SDK文档中提供更多关于这方面的文档和指导(http://docs.csharpsdk.org)在不久的将来


请参阅此处有关Facebook建议不使用cookies的详细信息:

您使用的是官方C#SDK(即)还是?我使用的是Codeplex上托管的(通过NuGet)您使用的是官方C#SDK(即)还是?我使用的是Codeplex上托管的(通过NuGet)