我使用iframe从我的服务器呈现我的应用程序.问题是一旦我点击我的应用程序中的链接,我被重定向到我的服务器.我的意思是,我在画布页面停留了一秒钟,然后突然而不是在Facebook网站上的iframe中查看它,我在我的服务器上重定向应用程序URL.我使用PHP和MySQL.
为什么会这样
Firebug信息:这是firebug给出的POST信息。由于上面的问题,它也没有发布到数据库。
<html>
<body>
<script type="text/javascript">
top.location.href = "http://www.facebook.com/login.php?v=1.0&api_key="xxxxx"&next=http%3A%2F%2F<my-web-server.com>%2F<appfolder>%2Fuser_submit.php";
</script>
编辑
显然,它在Chrome for Mac中运行良好。
编辑2
我刚刚通过Firebug在Facebook页面上[停止]浏览器发现了什么:只有这部分应用程序正在加载到Facebook页面上。其余的应用程序在重定向到我的服务器后才会加载。
<body>
<div id="wrap-iframe">
<script type="text/javascript">
top.location.href = "http://www.facebook.com/login.php?v=1.0&api_key="xxxxx"&next=http%3A%2F%2Fmy-domain-server.com%2Fapplocation%2Fuser.php";
</script></div></body>
编辑3
我做了一些修补,显然,它已经激怒了它甚至进一步。现在甚至第一页重定向我。如果我只记得我做了什么...:-(
Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 257
Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 257
Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 257
Warning: Cannot modify header information - headers already sent by (output started at /home/amitver/public_html/roadies/user.php:7) in /home/amitver/public_html/roadies/facebook.php on line 261
4条答案
按热度按时间qxgroojn1#
我有一段时间遇到了这个问题。有两件事要尝试:
1.确保在打开
<?php
标记之前没有字符/空格(它应该在文件中的第一个)1.是否调用require_frame()?
x759pob22#
试着把这段代码放在你的页面顶部:
这应该至少解决了“头已经发送”错误的问题。
piv4azn73#
这是一个已知的原因,但需要一些调查才能找到。IIRC,发生的情况是,当有人在您的iframe中更改页面时,您正在进行另一个require_login调用。FB客户端尝试使用可用数据进行身份验证- post / get /cookie-但如果失败,它将重定向到FB登录。如果用户已经登录并授权您的应用,这将立即(无形)重定向回您的应用程序,但有一个在Facebook的结束错误(我认为),导致它重定向到您的回调网址,而不是您的画布网址,因此弹出的框架.
解决方案:将查询字符串中的fb_ get参数传递给每个页面。基本上,将url中以“fb_”开头的所有内容都添加到所有链接中。这为API客户端提供了其他可验证的内容。
gzszwxb44#
http://www.facebook.com/login.php?v=1.0&api_key=“xxxxx”&next= http://someurl.com/user.php&canvas=1“;
添加canvas=1似乎可以做到这一点。将其保留在画布内,并且不打开回调url。