Facebook graph api FB Cookie缓存在Facebook应用程序中

Facebook graph api FB Cookie缓存在Facebook应用程序中,facebook-graph-api,coldfusion,session-cookies,application.cfc,Facebook Graph Api,Coldfusion,Session Cookies,Application.cfc,我正在使用affinitiz FacebookAPI for ColdFusion开发一个Facebook应用程序,在身份验证之后,我遇到了很多问题 API很好地抓取了应用程序cookie,我就可以登录了,但是只有在对模板进行额外调用的帮助下,如果您愿意,可以重新加载。在重新加载之后,一切都准备就绪,我可以使用访问令牌获得用户会话 我已将对API的调用放在OnRequest事件的Application.cfc中 所以这里有一件奇怪的事情,不管我从ColdFusion调用了多少次API,唯一能让我

我正在使用affinitiz FacebookAPI for ColdFusion开发一个Facebook应用程序,在身份验证之后,我遇到了很多问题

API很好地抓取了应用程序cookie,我就可以登录了,但是只有在对模板进行额外调用的帮助下,如果您愿意,可以重新加载。在重新加载之后,一切都准备就绪,我可以使用访问令牌获得用户会话

我已将对API的调用放在OnRequest事件的Application.cfc中

所以这里有一件奇怪的事情,不管我从ColdFusion调用了多少次API,唯一能让我得到最新应用程序Cookie的就是重新加载模板(我使用JavaScript作为解决方法)

这就好像应用程序cookie以某种方式被缓存,并且仅在重新加载时刷新,即使用户已通过身份验证

总而言之,程序如下:

  • 请求事件
  • API刮饼干
  • 所以我们重新装填
  • 请求事件
  • API刮饼干
  • 我们有Facebook UID和访问令牌
  • 这些是Application.cfc中的会话cookie设置

    <cfset THIS.SessionManagement = true />
    <cfset THIS.SetClientCookies = true />
    <cfset THIS.ClientManagement = true />
    

    然后,我可以通过会话访问FB cookie。

    我很好奇这里的这一部分:

    if(structKeyExists(session.fbUserSession,"uid")){
            if(userSession.uid NEQ session.fbUserSession.uid){
                // reset session variables;
            }
        }
        session.fbUserSession = userSession;
    

    在第一个请求中,session.fbUserSession.uid中是否有任何值?我想不会。看起来直到第三行之后才设置该值。这是否意味着将调用任何替换//重置会话变量的函数?那会不会给你带来一些问题?我不知道该代码的作用是什么,但从我所看到的session.fbUserSession中似乎没有值供您检查,至少在第二个请求之前。这意味着//reset session variables代码每次都会在第一个请求上运行。这就是你想要的吗?

    我刚修好。从Application.cfc的onRequest事件调用API是罪魁祸首。我的印象是onRequest就像在所有.cfm模板上添加代码一样

    我将调用添加到公开的模板中,一切都很顺利。不知何故,会话cookie在onRequest中会落后,甚至只有在刷新时才会重置


    如果有人能解释为什么会这样,我会非常高兴。

    我怀疑这里的很多人都不熟悉affinitiz Facebook API。你怎么称呼它?你能显示你的请求代码吗?它返回什么?我刚修好。从Application.cfc的onRequest事件调用API是罪魁祸首。我的印象是onRequest就像在所有.cfm模板上添加代码一样。我将调用添加到公开的模板中,一切都很顺利。不知何故,会话cookie在onRequest中会落后,甚至只有在刷新时才会重置。如果有人能解释为什么会这样,我真的很高兴:D(我会在我的潜伏者计时器启动后尽快提交答案)我从不按要求使用,所以我不知道它有什么问题,但我也从来没有听说过。如果您将代码放在onRequestStart()中,它会工作吗?只要有cookie,它就会被删除。
    if(structKeyExists(session.fbUserSession,"uid")){
            if(userSession.uid NEQ session.fbUserSession.uid){
                // reset session variables;
            }
        }
        session.fbUserSession = userSession;