0

我正在开发一个将在画布中运行的 Facebook 应用程序。这就是场景(我认为这很常见)。这都是服务器端的实现。

存在:

APP_URL: https://apps.facebook.com/xxxxxx/
CANVAS_URL: https://myexample.com/facebookApp/
  1. 第 1 步(应用程序的索引)有一个表单。它有action="CANVAS_URL/step2"(注意不是应用程序网址)。为了signed_request在下一步中使用,它有一个隐藏字段<input type="hidden" name="signed_request" value="<?php echo $_POST['signed_request'] ?>" />

  2. 步骤 2:它接收表单的信息并将其存储在 a 中Session,然后解析signed_request。这工作正常。我将其存储在 Session 中,因为我想在用户通过身份验证后将其保存到数据库中。如果用户登录到应用程序,我将他重定向到APP_URL/step3;如果没有,我将他重定向到登录对话框,使用&redirect_uri=APP_URL/step3. 在这两种情况下,请注意第 3 步是APP_URL/step3(因为我需要signed_request再次检查用户是否已通过身份验证和其他数据)。所有重定向都是使用 JavaScript 进行的:<script type="text/javascript">window.top.location = "URL";</script>

  3. 第 3 步:现在我想保存之前存储在 Session 中的数据。但是当用户在 FB 画布中导航时,会话数据不可用。

我尝试了几种组合。如果表单被发送到APP_URL/step2(而不是CANVAS_URL/step2,为了创建会话APP_URL),我无法检索发布的数据(因为它被发送到 FB,而不是发送到CANVAS_URL)。

我考虑过使用session_id重新创建 Session APP_URL,但恐怕这不是一种非常安全的方法。我确信必须有更好的解决方法。

4

0 回答 0