是否可以从Facebook页面选项卡iframe访问当前浏览器URL

时间:2012-03-20 12:43:48

标签: facebook facebook-page

我有一个facebook页面标签iframe,想要访问浏览器网址以获取当前的facebook页面网址。

我知道由于浏览器安全问题,无法使用与父框架交互的JavaScript。

对所有浏览器都不起作用的方法是从请求中读取 HTTP_REFERER 标头。

有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

我希望这根本不可能。否则,这将是一个安全问题,可能会被关闭。

您不应该根据对其他用户的妥协来编写代码。

答案 1 :(得分:1)

由于跨域策略,无法获取父框架的URL。并且无法在客户端获取有关您的应用程序运行页面的信息。

但是在服务器端,您可以使用signed_request中传递的详细信息重建页面URL。对于页面选项卡应用程序,它包含page

  

包含页面id string的JSON对象,liked boolean(如果用户喜欢该页面,则设置为true,{{1 (如果没有)和false admin(如果用户是该网页的管理员,则设置为boolean,如果他们不是,则设置为true

使用该页面ID可以构建页面URL:

false

如果您希望使用应用程序使用页面标签的链接:

http://www.facebook.com/pages/-/PAGE_ID

请注意,http://www.facebook.com/pages/-/PAGE_ID?v=app_APPLICATION_ID 由客户提供且无法信任,并且可能会被插件/代理等删除...

备注:
页面在现实生活中可能有不同的URL,但使用此技术的用户将登陆正确的页面,因为Facebook将发布重定向到正确的页面URL。 示例网址使用HTTP_REFERRER计划,如果需要,可随意使用HTTP

在PHP中,您可以像这样检测当前的方案:

HTTPS

答案 2 :(得分:0)

根据我的经验,

HTTP_REFERRER可能无法正常工作。如果选项卡应用程序是针对特定页面设计的(我认为应该这样),您是否尝试重新创建它?

https://www.facebook.com/MYPAGENAME/app_MYAPPID

MYPAGENAME是您的页面名称,MYAPPID当然是应用ID。

如果选项卡应用于多个页面,我很确定您将从https://graph.facebook.com/PAGEID获取相关数据以应用上述内容,其中PAGEID是您从{获得的页面的ID {3}}。