mediawiki的Facebook扩展仅适用于Firefox,而不是Chrome。 $ facebook-> getUser()返回0

时间:2013-09-12 13:54:05

标签: php facebook facebook-php-sdk mediawiki mediawiki-extensions

我们来解释一下这个问题。这会有点长,所以感谢你的耐心等待。

背景
有一个名为Mediawiki的框架,由维基百科使用。还有一个名为Facebook登录的第三方扩展,声称我可以允许人们通过Facebook帐户登录Mediawiki网站。

问题
它们都是用PHP编写的。 我的Mediawiki网站环境

+---------------+-----------+
|    Product    |  Version  |
+---------------+-----------+
| MediaWiki     | 1.20.6    |
| PHP           | 5.4.9     |
| MySQL         | 5.5.31    |
+---------------+-----------+

对于Facebook登录扩展,我从github github.com/garbear/facebook-mediawiki获取最新版本

它在Chrome中不起作用,但在Firefox中运行良好。

我的调查故事

首先,官方的Github回购错过了一个名为 ExternalUser.php 的文件,我将其从[path_to_mediawiki] / include复制并将其放入此扩展名。

http://d.pr/f/F0MC此链接是我的工作版本。 它只能在Firefox中声明,但在Chrome中不起作用

为什么我要问facebook-> getUser()返回0

我通过打印出一些错误日志来跟踪整个扩展,以检查变量的值。

Chrome和Firefox之间的唯一区别是:

当我在Google Chrome上测试时,在弹出窗口中输入我的Facebook用户名和密码后,点击“登录”按钮。当我刷新Facebook网站时,它已经显示为“已登录”状态。但是,在我的mediawiki网站上,该页面在登录页面中自动刷新,无法重定向到“已登录”状态和页面。

所以,我猜可能Chrome中的会话/ cookies设置有问题。我检查了我的Chrome设置,一切都是默认设置。我卸载了Chome并重新安装了它,但我仍然有同样的问题。

我的下一步是(必须)调试此扩展。在花了整整2天调试此扩展后,我假设我找到了与此问题相关的确切代码。

FacebookInit.php 第46行

$facebook = new FacebookAPI();

要进行调试,我们将其修改为

$facebook = new FacebookAPI();
error_log("==log===> ".$facebook->getUser(),0);

附加语句会将变量$facebook->getUser()写入apache error.log

当我在Firefox上尝试此操作时,它将返回一个正整数,对于Mark Zuckerberg为4,对于其他一些人为12345678。但是当我在Chrome上试用它时,它将始终返回0.

我在Stack OverFlow上尝试了大部分解决方案

如果有人知道我还能尝试什么,我会很感激输入。

2 个答案:

答案 0 :(得分:0)

如果您在Chrome中安装了Facebook应用(可以在“应用”下的Chrome“主页”上找到),请将其卸载然后再次尝试Facebook连接登录。

答案 1 :(得分:0)

如果您在Chrome中使用了Avast Online Security(版本9.0.2002.45)扩展程序,只需将其停用,然后刷新页面即可。

似乎avast阻止了facebook JavaScript代码(不知道为什么)。