2010-07-16 51 views
6

我遇到了一个问题,那就是Facebook JavaScript SDK没有在某些机器上设置cookie,所以当我尝试使用我的应用的秘密值验证cookie时,我的后端验证失败。为什么Facebook JavaScript SDK没有设置Cookie?

我有demo app;重要的文件是:

客户端使用了Facebook的JavaScript API登录用户,并得到他们的详细信息,然后这些职位到我的服务器。服务器发回客户端随后显示的fbs_APPID。在一些Windows机器上(在所有浏览器中),服务器不会获得它所期望的cookie。什么阻止Facebook设置cookie,以及如何解决它?

演示应用程序是在Sinatra中,但我们的产品应用程序发现错误是Rails,如果这有所作为。

回答

1

走在初始化代码lookt为JS:

<script> 
    FB.init({ 
    appId : 'YOUR APP ID', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true // parse XFBML 
    }); 
</script> 

你能为了得到cookie支持cookie的一个?请确保您没有在浏览器中禁用Cookie。

1

不幸的是,cookie选项并不可靠......我个人更喜欢获取javascript sdk的签名请求,将其作为post var发送到后端,然后解码此签名请求以验证该调用。 ..

这样它也将在safari中工作:)

干杯!