我遇到一个问题,即Facebook JavaScript SDK没有在某些机器上设置cookie,因此在尝试使用我的应用程序的秘密值验证cookie时,我的后端验证失败。
我有demo app;重要的文件是:
客户端使用Facebook JavaScript API记录用户并获取他们的详细信息,然后将这些发布到我的服务器。服务器发回客户端随后显示的fbs_APPID
。在某些Windows机器上(在所有浏览器中),服务器无法获得预期的cookie。什么阻止Facebook设置cookie,我该如何解决它?
演示应用程序在Sinatra中,但我们发现错误的生产应用程序是Rails,如果这有所不同。
答案 0 :(得分:1)
看一下S:
的初始化代码<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 :(得分:1)
cookie选项遗憾地不那么可靠......我个人更喜欢获得javascript sdk的签名请求,将其作为post var发送到后端,然后解码此签名请求以验证调用..
这样它也适用于safari:)
喝彩!
答案 2 :(得分:0)
我不确切知道发生了什么,但我认为这是一个Facebook问题,而不是你的应用程序的问题。同样的事情发生在我身上,然后它“神奇地”开始工作。
请参阅Why wouldn't the Facebook JavaScript authentication work on a specific computer?
我猜它与CDN上的Facebook缓存有关。