我有一个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中做到这一点,还有另外一种方法吗?
答案 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;
}