在app config中允许内部站点URL以及Web可见站点URL

时间:2012-05-22 09:33:44

标签: facebook url redirect dns internal

我已经读过,但我找不到任何类似的问题,所以这里就是......

我有一个配置正常的Facebook应用程序,让我的网站URL为:

http://adminpanel.its.a.very.long.url.mywebsite.com

这在应用程序配置中被配置为“站点URL”,它可以正常工作。

但是,该网站也在我们的内部网络上使用DNS,允许我们使用

http://adminpanel/

问题是facebook app不允许'redirect_uri'为

http://adminpanel/

并且失败并发生以下情况:

API错误代码:191 API错误说明:指定的URL不归应用程序所有 错误消息:redirect_uri无效:应用程序配置不允许给定URL。

是否可以同时允许

http://adminpanel.its.a.very.long.url.mywebsite.com

http://adminpanel/

提前致谢,

奥利

更新:我不能使用两个应用,因为我依靠“添加页面选项卡对话”将我的应用程序添加到各种页面。

我需要的是Facebook允许的这些重定向(由'下一个'参数指定)。

https://www.facebook.com/dialog/pagetab?app_id=12345678&display=popup&next=http://adminpanel/Success

https://www.facebook.com/dialog/pagetab?app_id=12345678&display=popup&next=http://adminpanel.its.a.very.long.url.mywebsite.com/Success

1 个答案:

答案 0 :(得分:0)

一个常见问题,而且很容易修复。查看下面的PHP代码:

if ( strstr( 'adminpanel', $_SERVER['HTTP_HOST'] ) ) {
    // this is the localhost settings

    $facebook = new Facebook(array(
        'appId'  => 'xxx',
        'secret' => 'xxx',
    ));

    $app_url = 'http://adminpanel/';
    $fb_url = 'http://apps.facebook.com/xxx/';

    //  other settings can go here too

} else {
    // this is the main / live site settings

    $facebook = new Facebook(array(
        'appId'  => 'yyy',
        'secret' => 'yyy',
    ));

    $app_url = 'http://adminpanel.its.a.very.long.url.mywebsite.com';
    $fb_url = 'http://apps.facebook.com/yyy';

    //  other settings can go here too

}

问题解决了!

代码检查以查看其运行的host并为每个加载正确的设置。您需要在Facebook上拥有两个不同版本的应用程序。这将允许您单独配置每个应用程序的URL(如上面的PHP代码中所示)。

如果您使用的是其他语言,则可以通过检测host并将配置设置放在条件语句的相关部分中轻松完成相同的操作。它甚至允许您配置多个(即超过2个)环境。