Facebook应用程序标签页在未登录时只显示白色画布

时间:2012-11-27 19:12:16

标签: facebook facebook-graph-api facebook-javascript-sdk

我已经设置了一个Facebook应用,并将其添加为我的粉丝页面上的标签。

以用户身份登录并请求应用页面的直接网址,向我展示了一切正确的信息。

然而,当我没有登录@facebook并且我转到直接URL时,应用页面上没有显示任何内容。它只是在画布上显示白色背景,最大高度为100px。

我可以自然地从该页面登录,在从登录回调后,我再次正常看到应用程序页面。

我认为它可能与我的代码有关。但后来我测试删除了我的index.php文件中的所有内容,只添加了一些静态虚拟文本。仍然没有出现。

有什么想法吗?

编辑1: 我认为这可能与我将应用程序画布定义的URL请求重定向到https有关。我在其他地方读到,Facebook也可能出于某种原因需要访问同一URL的http。但是还没有找到任何支持它的东西。

编辑2: 看到我甚至无法获得带有静态文本的空白index.php的任何内容我不确定这是否可能与它有关。但是打开我的整个脚本的错误,我得到了$ signed_request的一些错误 - 猜测因为我在无法检索它时调用它。不知道该怎么办,但无论如何都要发布代码以防有人看到任何东西。

function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
  }

if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) {
          //echo "This content is for Fans only!";
          $amFan = "true";
    } else {
          //echo "Please click on the Like button to view this tab!";
          $amFan = "false";
    }
}

1 个答案:

答案 0 :(得分:0)

当用户根本没有登录时是否有signed_request?

如果没有,您的代码在parsePageSignedrequest()中返回false并完全跳过$amFan的设置 - 其余代码是否适用于该情况?