关于javascript:在Facebook登录名上保存会话

Save session on Facebook login

在我的mvc3 facebook应用程序中,如果登录状态=已连接或让他登录,我会检测到用户
通过Facebook登录弹出窗口。登录后,我在会话中保存用户Facebook ID:

1
HttpContext.Current.Session["CurrentUserFacebookId"] = FacebookId;

问题出在野生动物园浏览器中。 Safari的默认设置是"阻止第三方和广告客户的Cookie"。由于所有操作都会检查会话,因此不会保存会话并且用户无法使用我的应用程序。如何解决此问题?谢谢


您可以通过使用简单的P3P策略设置标头来尝试执行此操作

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND
CNT"

或在PHP中:

header('P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS
OUR IND CNT"');

或在ASP.NET中:

HttpContext.Current.Response.AddHeader("p3p","CP=""IDC DSP COR ADM
DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""")

但是我认为在Safari 5.5.1或更高版本之后,此技巧不再起作用。我认为Safari 5.5.1或更高版本中的唯一方法是通过在"偏好设置"->"隐私"中将"阻止Cookie"设置为"从不"来启用第三方Cookie /会话。


也许这个答案来晚了。

但是,请尝试将以下内容放入web.config中:
" forms loginUrl = "?/ Account / Login "超时= " 2880 " cookieless = " UseCookies "

在身份验证标签内。 (粗体部分)启用cookie并为我工作。

也许这不是最好的解决方案,但它可以在Safari中使用。并避免用户与首选项进行交互。