如何检测Facebook应用程序正在加载页面以更改CSS?
Facebook iframes是758px宽。该网站的宽度为900px。如何检测Facebook应用程序正在加载页面以更改CSS?
有什么办法可以告诉apps.facebook.com正在拉动页面,所以我可以改变样式以使页面变窄?
if($_SERVER['HTTP_REFERER'] == "http://apps.facebook.com/forwardmyinfo/"){
do something
}
编辑:
因此,这里是充实多一点(这是我后来发现的)和解决方案的问题。
如果您的页面比Facebook的标准iframe宽度(758px?)更宽,则当应用程序加载到Facebook iframe中时,您的页面将挂起iframe的右侧。
我上面的答案肯定会检测到您正在加载我的Facebook应用程序(假设它为),但仅限于您的着陆页。一旦你点击网站 - 这是一个真正的应用程序,它会将引用者视为网站...而不是Facebook。
我的解决办法是在加载主页更改样式表,但更重要的是,设置可以在其他页面测试会话变量:
if($_SERVER['HTTP_REFERER'] == "http://apps.facebook.com/forwardmyinfo/"){
echo '<link href="includes/facebook.css" rel="stylesheet" type="text/css" media="Screen"/>';
$_SESSION["FB"] = true;
//do other stuff if needed
}
else{
//load original style sheet or whatever
}
其余部分是显而易见的,但在这里这是无论如何:
在所有其他网页包括此代码:
if($_SESSION["FB"]){
echo '<link href="includes/facebook.css" rel="stylesheet" type="text/css" media="Screen"/>';
//do other stuff if needed
}
else{
//load original style sheet
}
别忘了你也要去在每个页面上需要session_start()。
希望能帮助别人。的
ifaour的ssuggestion:
if(isset($_REQUEST['signed_request']))
也可以工作,但如果该变量是从页传递到页,因此它不会通过该网站进行我不知道。它确实需要测试,但我对我的结果感到满意。
有复杂的方式,简单的方法。
简单的方法是简单地告诉你的页面链接来自Facebook的Facebook给予一个唯一的URL。
http://server/page?source=Facebook
然后检查您的_GET
范围。
这也将有助于记录。
一个简单可靠的方法是设置一个get参数。 如果你的网页的网址是
htttp://whatever.com/page.php
让Facebook链接
htttp://whatever.com/page.php?ref=facebook
在会话开始,你可以测试是否该设置。
if(@$_GET['ref']){
if($_GET['ref']=='facebook'){
//change display
}
}
使用没有固定像素大小的相对布局将是更好的选择。
是的,查询字符串技术也可以工作 - 它是非常相同的事情,检查引用或检查查询字符串。我想有多种解决方案。可以在这里记录几个人以便人们看到它们,这是好事。没有太多关于这方面的信息。 – Steve 2011-04-05 11:20:52
发现我自己的答案 – Steve 2011-04-04 07:16:00
您可以发布您的答案?其他人可能会遇到同样的问题!这是因为它是关于;) – 2011-04-04 07:18:30
-.- oooop对不起我的不好 – 2011-04-04 07:25:31