我有一个带有用户登录名的 Drupal 站点。该站点中嵌入了一个 Flash 应用程序,该应用程序向所有人显示一些数据,但如果用户登录,则允许使用额外的功能。在 Flash 中,我使用 XMLRPC 访问 system.check 方法(确定用户是否已登录)和 user.login 方法(从 Flash 中登录用户)。
在 Flash 中,一切正常。但是,Flash 登录状态似乎与站点的其余部分不对应。例如,如果我通过 XMLRPC 调用 user.login,随后对 system.check 的调用显示我已登录,但 Drupal 用户页面仍然显示我已注销。或者,如果我在这两个地方都登录了,然后通过 Drupal 用户页面注销,下一次调用 system.check 仍然表明我已登录。
如何使 Drupal GUI 和我的嵌入式 Flash 应用程序之间的登录状态保持一致?
(注意:我没有使用任何 XMLRPC 库,我只是手动构建必要的 XML 并使用 URLRequest 对象发送 POST 方法。)
编辑:我已经通过这个问题以及通过 Web 代理测试确认用户登录页面返回的 SESS cookie 正在被 Flash 应用程序拾取并发送回。
编辑:现在我已经通过实验证明,即使 Flash(通过 Safari)发送相同的 cookie,它在连接到 XMLRPC 服务时会返回一个不同的 cookie,而不是在请求和 HTML 页面时。换句话说,Drupal 就是不支持这种同步,我被卡住了。我接受下面的答案,使我走上正轨。
编辑:在撰写本文时,AMHPHP 尚未完全针对 Drupal6 发布,但事实证明它已安装在网站上。使用DrupalSite库,我可以非常轻松地从 flash 登录和登出站点,并且登录在 flash 和 HTML 之间保持一致。