如果主机url被直接命中,则将facebook应用程序重定向到canvas url


redirect facebook app to canvas url if host url is hit directly

我有一个基于iframe的facebook应用程序,我只想在有人直接点击应用程序url时http://mysite.com必须重定向到我的脸书画布url为这个应用说http://apps.facebook.com/mysite.这看起来很容易,但不幸的是,它在我的脑海中没有点击

如有任何帮助,将不胜感激

编辑

应用于代码点火器

编辑

htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
php_value error_reporting 7
php_flag display_errors On
php_value auto_prepend_file prepend.php

说我的域名是

http://abc.com/mysitefolder

我的facebook应用程序链接是

http://apps.facebook.com/myappname

请考虑http和https转换太

还有一个建议,正如你所看到的,我在htaccess中使用prepend只是为了获得一些日期时间内容的用户时区,我这样使用它可以吗?该文件实际上为用户在每次会话第一次访问网站时设置了一个cookie

致以最诚挚的问候Junaid

来自Facebook的应用程序的任何画布页面都将定义$_REQUEST['signed_request']。你可以检查这个请求变量的存在,如果没有设置,重定向到Facebook。

据我所知,没有任何服务器端编码可以做到这一点……再说一遍,既然这一切都发生在事情的前端,你可以使用类似的javascript

if(window!=window.top){i am iframed now redirect or w/e you wanna do}

由于您希望将域名重定向到应用程序,而不是相反,因此应用程序位于iFrame中这一事实并不相关。

在我看来,最好的方法是使用.htaccess。这意味着你可以使用自定义URL,如mydomainname.com/mypagename/,它会重定向到apps.facebook.com/myappname/mypagename/,这样你就可以更容易地为你的应用做广告。另一个好处是您不必依赖Javascript。有些人(数量很少)已经关闭了它,但为什么要解析所有的PHP代码呢?

所以,你可以做的是让根域"空白",并且只在.htaccess文件中包括以下内容:

RewriteEngine on
RewriteRule ^$ http://www.mydomainname.com/ [R=301,L,QSA]
RewriteRule ^/(.*) http://www.mydomainname.com/$1 [R=301,L,QSA]

QSA还会将查询参数附加到目标URL,例如"?ref=email"。

当然,如果你把应用程序代码放在同一个域的根目录中,你真的不需要做任何事情,只需要调整你的身份验证代码。

如果这对你不起作用,请给我们更多的细节:

  • 应用程序"生活"在哪里
  • 如果应用程序位于mydomainname.com中,当您直接访问URL时会发生什么
  • 你是如何进行身份验证的

代码显然有帮助。

除非mydomainname.com不是专门针对该应用程序的,否则我建议将实际应用程序托管在子域上。事实上,不管怎样,都应该帮助你组织起来。或者你可能想让该应用程序也可以作为一个网站访问,并提供Facebook登录选项。

干杯