如何检查是否在Facebook画布内

How to check if inside Facebook Canvas

本文关键字:Facebook 布内 是否 何检查 检查      更新时间:2023-09-26

Facebook应用程序,如何使用PHP检查Facebook画布/单机版内部?

这个问题与上面的问题完全重复,但上面方法的解决方案现在似乎不起作用,有什么更新吗?关于HTTP_REFERRER头,我在Firefox中发现了一些问题。还有其他技巧吗?

通过一个有效的signed_request可能是测试这一点的一种方法。。。

只有您的应用程序及其APP_SECRET才能解码该signed_request,因此不太可能有人能够伪造有效的signed_request;如果他们能够做到这一点,那么他们几乎绕过了Facebook的安全。

如果他们做到了,那么也许他们应该能够在Facebook之外使用您的应用程序;)

我就是这么做的($this<---是一个facebooksdk对象):

$this->signedRequest = $this->getSignedRequest();
if(!$this->signedRequest){
    show_404();
}

试试这个:

public static function referrerIsFacebookCanvasApp() {
    if (stripos($_SERVER['HTTP_REFERER'], "apps.facebook.com") === false || strpos($_SERVER['HTTP_REFERER'], "facebook.com/l.php?u=") !== false) {
        return false;
    }
    return true;
}