如何在facebook外禁用facebook iframe应用程序

时间:2011-06-22 10:23:43

标签: php facebook facebook-php-sdk

我创建了一个iframe facebook应用程序,我想禁用Facebook以外的应用程序,用户无法通过直接网址打开应用程序。我找到了一个使用javascript的解决方案,但我需要用PHP。

我无法使用引荐来源,因为有些用户已经在浏览器中禁用了它...

2 个答案:

答案 0 :(得分:2)

您可以检查请求中是否发送了signed_request参数。 如果应用程序在facebook内打开,则存在signed_request。

但还有一个问题 您应该检查signed_request是否有效,并且可以使用parse_signed_request方法

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

    // decode the data
    $sig = $this->base64_url_decode($encoded_sig);
    $data = json_decode($this->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;
}

然后您可以检查$ data ['user_id']是否存在或者是否等于登录用户。 如果没有,你可以像这样重定向 echo“< script type ='text / javascript'> top.location.href ='$ this-> loginUrl';< / script>”; 或者找一些从php重定向的方法。 (在旧的php sdk中有重定向方法)

答案 1 :(得分:1)

您唯一真正的选择是尝试以某种方式使用Facebook API,看看您是否得到任何回复。