Расширение Facebook в MediaWiki работает только в Firefox, а не в Chrome. $facebook->getUser() return 0

Давайте объясним эту проблему. Это будет немного долго, так что спасибо за ваше терпение.

Фон:
Существует фреймворк под названием Mediawiki, который используется в Википедии. И есть стороннее расширение с именем Facebook login, которое утверждает, что я могу разрешить людям входить на сайт Mediawiki через учетную запись Facebook.

Проблема:
Оба они написаны на 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. Я проверил настройки Chrome, и все по умолчанию. Я удалил Chome и переустановил его, но у меня все еще остается та же проблема.

Мой следующий шаг - (должен быть) отладить это расширение. Потратив целых 2 дня на отладку этого расширения, я предполагаю, что нашел точный код, связанный с этой проблемой.

В FacebookInit.php строка 46

$facebook = new FacebookAPI();

Для отладки давайте изменим его на

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

Дополнительный оператор напишет переменную $facebook->getUser() apache error.log

Когда я попробую это на Firefox, он вернет положительное целое число, как 4 для Марка Цукерберга, 12345678 для некоторых других людей. Но когда я пытаюсь сделать это на Chrome, он всегда возвращает 0.

Я перепробовал большинство решений Stack OverFlow:

Если кто-нибудь знает, что еще я могу попробовать, я был бы признателен за вклад.

2 ответа

Если у вас есть что-то вроде расширения Avast Online Security (версия 9.0.2002.45) в Chrome, просто отключите его и обновите страницу.

Похоже, что avast блокирует код JavaScript на Facebook (понятия не имею, почему).

Если у вас установлено приложение Facebook в Chrome (вы можете найти его на "домашней странице" Chrome в разделе "приложения"), удалите его и повторите попытку подключения через Facebook.

Другие вопросы по тегам