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

How to manage Facebook connect in Drupal multisite?

我安装了 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 应用程序添加仅 one 域(或其子域,即并非如此)。我的意思是,在 Facebook 应用程序中我可以输入 www.foo.com,但不能输入 www.bar.com,所以如果我尝试从 www.bar.com 注册,Facebook 会抛出一个 'domain not allowed' 错误。

我认为处理此问题的正确方法是为 www.bar.com 打开第二个 facebook 应用程序,但 fbaouth 只允许我输入一个应用程序 ID。我怎样才能克服这个问题?

编辑:有两个变量 fboauth_id 和 fboauth_secret。覆盖这些可以解决问题,但我无法在 setting.php 中执行此操作,还有另一种方法吗?

原始解决方案:我解决了这个问题,修改了 fboauth 模块代码。我创建了两个函数:一个返回应用程序 ID,另一个返回应用程序机密,具体取决于我所在的域。然后我用我的自定义函数替换了模块文件中的每个 "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;
}