除非 Facebook 更改他们的 URL 方案,否则这是可行的。
请注意,此方法发出HEAD
请求,而不是GET
. 因此,不会下载任何内容。有关如何/为什么工作的进一步说明,请参阅http://anuary.com/47/keeping-facebook-portfolio-up-to-date。
请注意,如果页面隐私设置限制未经身份验证的用户,您需要伪造用户身份验证才能使其正常工作。
$fn_is_app_on_page = function($page_id, $app_id)
{
$ch = curl_init();
curl_setopt_array($ch,
[
CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11',
CURLOPT_URL => 'https://www.facebook.com/pages/anuary/' . $page_id . '?sk=app_' . $app_id,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_NOBODY => TRUE
]);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if($info['http_code'] == '404')
{
return FALSE;
}
if(strpos($info['url'], (string) $app_id) !== FALSE)
{
return TRUE;
}
return FALSE;
};
$fn_is_app_on_page(130414917005937, 299770086775725); // TRUE
$fn_is_app_on_page(1, 299770086775725); // FALSE
$fn_is_app_on_page(130414917005937, 1); // FALSE