在Facebook Canvas中发布表单,signed_request和会话

时间:2012-10-24 22:05:33

标签: facebook forms session post facebook-canvas

我正在开发一款将在画布上运行的Facebook应用。这是场景(我认为这很常见)。这是所有服务器端实现。

存在:

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

  2. 第2步:它会收到表单信息并将其存储在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画布中导航时,会话数据不可用。

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

    我考虑过使用session_idAPP_URL中重新创建会话,但我担心这不是一种非常安全的方法。我确信必须有更好的解决方法。

0 个答案:

没有答案