Facebook iframe选项卡应用程序,所有人都可以看到,但该应用程序不公开?

时间:2011-10-26 01:01:19

标签: facebook iframe private

据我所知,到目前为止,您可以创建自己的Facebook应用,将自定义标签和iframed内容放到您的网页上。我已经完成了几个基本步骤来测试,但这是我的问题:

我正在为特定目的创建自定义Facebook登录页面,我不希望该应用程序只供任何人安装。但是,在我的页面上安装该应用程序后,我希望每个人都能够看到内容。我尝试打开'沙盒',但隐藏了应用程序和内容。

我还没有找到满足我所有需求的预制iframe包装。在我阅读和搜索的所有教程中,我没有看到任何人提到将他们的应用程序放在公众手中的担忧。

1 个答案:

答案 0 :(得分:0)

这很简单,解析signed_request并查看您的应用是通过Page访问还是直接通过apps.facebook.com访问,如果第二个是真的,只需将用户重定向到您的Facebook页面标签。

function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}

$signed_request = $_POST['signed_request'];
$response = parse_signed_request($signed_request);

if(empty($response['page']['id'])){
            die('<script>top.location.href = your_page_tab_url</script>');  
}