在应用内获取Facebook URL

时间:2014-01-15 02:10:10

标签: php facebook url get

我正在使用此代码获取当前页面网址:

<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $url;
?>

在网站上,结果如下图所示。

enter image description here

但是当我在Facebook应用程序中使用它时,它给了我相同的结果,而不是给我应用程序URL,如下图所示。

enter image description here

如何在应用页面内获取Facebook应用URL?

2 个答案:

答案 0 :(得分:0)

客户端

更明显的方法是使用JavaScript,因为您的Web服务器不了解<frame>本身。但除非您访问其父框架托管在同一域上的框架,否则子框架无法访问(或操纵)父框架。允许您这样做会违反JavaScript's same-origin policy

如果他们在同一个域中,您可以找到如下所示的网址:

window.parent.location // Location object
window.parent.location.href // "http://..."

similar question's answer建议使用document.referrer来查看请求是否来自Facebook;但这并没有告诉你完整的URL。因此,如果您有多个指向同一Facebook应用程序的应用程序ID,则无效。在这种情况下,请将查询字符串参数添加到Facebook页面选项卡URL,并将应用程序的内容基于该查询字符串参数。

服务器端(PHP)

例如,在Facebook中,将查询字符串?referrer=appid123添加到页面标签URL。在PHP中,您可以检查查询字符串参数,如下所示:

if($_GET['referrer'] == 'appid123'){
    // Do something for this visitor, who has come via my Facebook app
}

答案 1 :(得分:0)

我已经通过使用此代码来检查查看此网站的用户是在Facebook应用程序页面内还是在自己的网站内。

<?php 

$is_fb =   ( $_SERVER["SERVER_PORT"] !== 80 ) ? "".$_SERVER["SERVER_PORT"] : "";

if ($is_fb == 80) {
    /// The User is inside the website
    $InsideFacebook = '0';
}else{
    /// The User Inside Facebook app page
    $InsideFacebook = '1';
}

?>

此代码正在执行以下操作

如果网站http://my-website.com/website/内的用户端口 80

如果用户在Facebook App Page上,则端口将与 80

不同