如何在Drupal多站点中管理Facebook连接?

时间:2015-04-29 10:15:48

标签: php facebook drupal drupal-7

我有一个Drupal多站点安装。它不是常见的多站点安装。简而言之:我有一个单一的数据库,一个单一的setting.php,主题的更改由主题模块ThemeKey根据站点域进行管理。 drupal安装使两个站点使用不同的主题,我设法使用Apache Server Alias为他们提供了两个不同的域,因此我有两个站点www.foo.com和www.bar.com。

现在,我正在使用模块FBOauth管理facebook注册,该模块只允许输入一个Facebook应用ID。在第一个网站,让我们说www.foo.com,Facebook注册工作完美,因为它与fboauth知道的Facebook应用程序连接。在第二个网站www.bar.com中,注册不适用于Facebook,允许我在单个Facebook应用中添加一个域(或其子域,但事实并非如此) )。我的意思是,在Facebook应用程序中,我可以进入www.foo.com,但不能进入www.bar.com,所以如果我尝试从www.bar.com注册,则会抛出“域名不允许”错误。

我认为解决这个问题的正确方法是为www.bar.com开设第二个Facebook应用程序,但fbaouth允许我只输入一个应用程序ID。我怎么能克服这个?

编辑:有两个变量fboauth_id和fboauth_secret。覆盖这些解决了这个问题,但是我无法在setting.php中做到这一点,还有另外一种方法吗?

1 个答案:

答案 0 :(得分:0)

原始解决方案:我解决了问题,修改了fboauth模块代码。我创建了两个函数:一个返回一个app id,另一个返回app秘密,这取决于我所在的域。然后我替换了每个" variable_get(' fboauth_id',' ;')"和" variable_get(' fboauth_secret','')"在我的自定义功能的模块文件中。它不优雅,我仍然对更好的解决方案感兴趣。

function fboauth_get_app_id_depending_on_domain(){
  $server_name = ($_SERVER['SERVER_NAME']);
  $server_uri =($_SERVER['REQUEST_URI']); 
  if($server_name=='www.bar.com'){
     $app_id='1234567890';
  }else{
     $app_id=variable_get('fboauth_id', '');
  }
 return $app_id;
}

function fboauth_get_app_secret_depending_on_domain(){
 $server_name = ($_SERVER['SERVER_NAME']);
 $server_uri =($_SERVER['REQUEST_URI']); 
 if($server_name=='www.bar.com'){
      $app_secret='1234567890';
 }else{
     $app_secret=variable_get('fboauth_secret', '');
 }
 return $app_secret;
}