1

この問題について説明しましょう。少し長くなりますが、よろしくお願いします。

背景:
ウィキペディアで使用されている Mediawiki というフレームワークがあります。また、Facebook login という名前のサードパーティの拡張機能があり、Facebook アカウント経由で Mediawiki Web サイトにログインできると主張しています。

問題:
どちらも 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() return 0 を要求する理由:

エラーログを印刷して変数の値を確認することで、拡張機能全体を追跡しました。

Chrome と Firefox の唯一の違いは次のとおりです。

Google Chrome でテストしたところ、ポップアップ ウィンドウに Facebook のユーザー名とパスワードを入力した後、[ログイン] ボタンをクリックしました。Facebook Web サイトを更新すると、既に「ログイン済み」ステータスが表示されていました。しかし、私の mediawiki Web サイトでは、ログイン ページでページが自動的に更新され続け、「ログイン済み」の状態とページにリダイレクトできません。

なので、Chrome のセッション / Cookie の設定に問題があるのではないかと思います。Chrome の設定を確認しましたが、すべてがデフォルトです。Chome をアンインストールして再インストールしましたが、まだ同じ問題が発生しています。

私の次のステップは、この拡張機能をデバッグすることです (する必要があります)。この拡張機能のデバッグに丸 2 日間費やした後、この問題に関連する正確なコードを見つけたと思います。

FacebookInit.php46 行目

$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 でほとんどのソリューションを試しました

誰かが私がさらに何を試すことができるか考えているなら、私は入力に感謝します.

4

2 に答える 2

0

Facebook アプリが Chrome にインストールされている場合 (これは、Chrome の「ホームページ」の「アプリ」の下にあります)、アンインストールしてから、Facebook 接続ログインを再試行してください。

于 2013-09-30T05:19:49.400 に答える