2012-01-18 4 views
0

読んでいただきありがとうございます!ここに私は何をしているのです。WordPressプラグインから認証するとき、FacebookバックエンドがユーザーIDとして0を返すのはなぜですか?

Facebook providesというPHP SDK(最新バージョン3.1.1)を使用しているWordPressプラグインを作成しています。私のアプリケーションはFacebookにウェブサイトとして登録されています。なぜなら、WordPressに埋め込まれていても、実際にはウェブサイトのように機能するからです。

このSDKには、わかりやすくわかりやすいexample.phpが付属しています。このファイルを私のサーバーに置くと、それだけで動作します。証明書ファイルとSDKファイルが正しい場所にあり、スクリプトによってアクセス可能であることを確認しました。

しかし、WordPressプラグイン(プラグインの管理ページから)と全く同じことをすると、FacebookバックエンドはユーザーIDを返さず、代わりに常に0を返します。 0を返すFBの問題はかなり一般的ですが、その理由はかなり異なるようです。

この動作が常にこのようなものではないことに言及する必要があります。ほんの数週間前に始まりました。私は、FBバックエンドが何らかの形で間接的なAPIコールをチェックし、WordPressプラグインから呼び出すことがFBのauthルールに何らかの形で違反していると思われます(CSRFの問題?)。確信はないけど。

ここで何が起こっているのか誰かが手がかりを得ていますか?ここで

答えて

0

は私の推測です:それは認証を必要とするため

FacebookはWordPressのブログのバックエンドにアクセスすることはできません。したがって、example.phpコードはWordPressの管理パネルから表示されません。

サーバー上でrawになっても、そのようなアクセス制御はなく、Facebookはそのページにアクセスできます。

この場合、WP_Rewrite classを使用して書き換えルールを追加することで、これを管理者以外のプラグインにすることをおすすめします。

+0

すぐにお返事ありがとうございます!私が不思議に思うのは、もしそうなら、なぜ2週間前に働いたのだろう? WPプラグインの一部であるPHPスクリプトの中からFBを呼び出すと、FBは実際にWPバックエンドにアクセスする必要がありますか?これを技術的に私のために説明できますか?私はあなたが言ったようにこれを回避することができたらいいと思うが、これはプラグインのポイントであるため、これを管理者以外のプラグインにすることはできない。 – twigmac

+0

ユーザー名でログインしてパスすると、WordPressはいくつかのクッキー(http://codex.wordpress.org/WordPress_Cookies)をドロップして、ログインしたユーザーとして認識します。 WordPressが単にあなたのバックエンドにアクセスするボットを許可した場合、誰でもあなたのインストールを変更または破棄することができます。 Facebookは認証されておらず、あなたの管理ページをリクエストするとクッキーがないので、WPはエラーを投げます。 example.php rawを提供したとき、WordPressはまったく関与していませんでした。Facebookはあなたのサーバーに直接話しました。 – buley

+0

詳細な説明ありがとうございます。 FBが認証プロセスの一部として管理ページを要求する必要があるので、私は今よりもそう考えられます。なぜ私は最初に働いたのだろうと思っています。それは常にエラーを生成するはずでしたが、そうしなかったはずです。 URLの書き換えで解決しようとします。 ありがとう! – twigmac

関連する問題