Asp.net mvc 重新打开网站后Accesstoken不可用

Asp.net mvc 重新打开网站后Accesstoken不可用,asp.net-mvc,asp.net-mvc-3,facebook-c#-sdk,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Facebook C# Sdk,Asp.net Mvc 4,我有一个带有Facebook C#SDK的MVC 3网站。 现在,我正在一个干净的MVC4应用程序中,用sdk的新版本6重新进行facebook集成。所以我使用了sdk网站上的gettings Start帮助页面 我遵循了教程,只修改了教程的一部分。我改变的是,我调用了一个控制器操作,因为启动了ashx,但不允许在会话对象中设置accesstoken。会话为空 现在,当我第一次启动网站时(使用Chrome,因为IE默认不工作。教程解释了原因),我看到了登录按钮。 当我按下登录按钮时,我会看到fa

我有一个带有Facebook C#SDK的MVC 3网站。 现在,我正在一个干净的MVC4应用程序中,用sdk的新版本6重新进行facebook集成。所以我使用了sdk网站上的gettings Start帮助页面

我遵循了教程,只修改了教程的一部分。我改变的是,我调用了一个控制器操作,因为启动了ashx,但不允许在会话对象中设置accesstoken。会话为空

现在,当我第一次启动网站时(使用Chrome,因为IE默认不工作。教程解释了原因),我看到了登录按钮。 当我按下登录按钮时,我会看到facebook的授权页面,该页面会询问我的应用程序是否要连接到我的facebook帐户。当我提交时,会触发控制器中的MVC操作,并将给定的accesstoken存储在会话中。 之后,我可以访问自己的信息

当我关闭VisualStudio(IIS express也随之关闭)并重新启动网站时,登录按钮将更改为我的帐户,并显示我使用已连接的应用程序的图片。之后,我使用自己的信息导航回页面,并在获取accesstoken的会话上获得nullreferenceexception。为什么呢?为什么用户已登录,但存储accesstoken的操作在我第二次打开网站(新会话)时未触发

我不应该在某个地方设置应用程序机密吗?在教程之后,我在javascript中设置了AppId


谢谢。

根据Facebook,您的用户已登录到您的应用程序,但自从您重新启动Cassini web服务器后,您的“会话”已消失/丢失/删除


检查您的会话,确保您在会话中有有效的令牌,如果没有,请将用户重定向到您的登录代码。

我知道会话已丢失,因此accestoken不再位于会话中。但是为什么我看不到登录按钮,而是看到我自己的名字和一个小的个人资料图片。。。现在我无法登录,因此存储它的accestoken代码无法获取firedFacebook维护它自己的状态,这不一定与Web服务器会话中的状态相同。如果你想让它们匹配,那么你应该调用FB.logout()来清除客户端的cookie,它会让图片显示出来。嗯,我发现IE facebook会话和chrome会话之间有区别,因为当我在IE中注销并打开chrome时,我仍然在facebook中登录。当我在Chrome中注销并在Chrome中启动我的应用程序时,我再也看不到图片了,但登录按钮也不在了?我确实在登录按钮应该在的地方看到了facebook的4个加载块。我现在明白了为什么在教程中会出现登录按钮。只需将你的应用程序连接到facebook即可。当你在Facebook上登录时,你的名字和照片都是可见的。当你没有登录facebook时,你什么也看不到。因此,在打开站点时获取accesstoken与此无关,但只有在第一次将应用程序作为重定向连接时,您才可以直接显示用户的某些信息。。。