【问题标题】:How do i disable the facebook iframe app outside of facebook如何在 facebook 之外禁用 facebook iframe 应用程序
【发布时间】:2011-06-22 10:23:42
【问题描述】:

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

我无法使用引荐来源网址,因为某些用户已在浏览器中禁用它...

【问题讨论】:

    标签: php facebook facebook-php-sdk


    【解决方案1】:

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

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

    公共函数 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 ""; 或者找到一些从 php.ini 重定向的方法。 (旧的php sdk中有redirect方法)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        相关资源
        最近更新 更多