Zend框架facebook将URL重定向到canvas应用程序URL

时间:2010-11-28 15:08:45

标签: php zend-framework facebook

我目前正在开发基于facebook canvas(iframe)的应用程序。有没有办法让Zend框架输出这样的URL:

http://app.facebook.com/appName/controller/action

获得

http://www.domain.com/controller/action ?

这不是那么重要,因为基于iframe的应用程序一切正常,但我想提供更好的用户体验并获取网址

http://app.facebook.com/appName/ 

根本不是用户友好的。可能解决方案很容易,但我完全“堆叠”。该应用程序分为模块,所以我可以在Boostrap.php中改变它,这可能是解决方案在我的鼻子下面,但我看不到它..: - /

修改 也许我没有像我应该那样表达它。问题不在facebook内。问题出在 zend本身。它输出原始应用(例如myapp.example.com)网址,我希望它输出http://app.facebook.com/myapp

提前致谢。

的Lukas

2 个答案:

答案 0 :(得分:0)

我不确定您的问题是什么,但Facebook已将收到的网址映射到您的应用程序。

例如,如果您的画布网址设置为http://domain.com/且用户进入http://apps.facebook.com/appName/controller,则会被Facebook映射到http://domain.com/controller

它适用于canvas / fbml和iframe应用程序。

要使Zend Framework生成具有备用基础的URL(即:http://apps.facebook.com/appName),您可以在引导程序中执行此操作:

protected function _initBaseUrl() {        
    $front  = $this->getResource('frontcontroller');
    $front->setBaseUrl('http://apps.facebook.com/appName/');
}

如果您没有使用引导程序,则可以以其他方式获取前端控制器的实例并执行此操作:

    $front  = Zend_Controller_Front::getInstance();
    $front->setBaseUrl('http://apps.facebook.com/appName/');

答案 1 :(得分:0)

最后,我设法解决了这个问题。所以对于其他开发人员,我在这里发布我的解决方案。

诚实是有点复杂,但是:

Use Zend_Controller_Router_Route_Hostname

使用示例可以在http://framework.zend.com/manual/en/zend.controller.router.html中找到,然后用经典路线链接它,如:

$hostnameRoute = new
    Zend_Controller_Router_Route_Hostname(
                     ':username.users.example.com',
                     array(       
                  'controller' => 'profile',
                  'action'     => 'userinfo'
              )
      );
$plainPathRoute = new Zend_Controller_Router_Route_Static('');
$router->addRoute('user', $hostnameRoute->chain($plainPathRoute);