web-dev-qa-db-ja.com

Facebookiframeタブの署名付きリクエストは常に空です

私はFacebookアプリのタブで作業しており、ここに記載されている署名済みのリクエストバンドルを使用したいと思います: http://developers.facebook.com/blog/post/462/

サンプルコード を使用して、タブに渡されると思われる署名済みのリクエストを解凍しようとしていますが、$_POST$_GET、および$_REQUESTは常にすべて空です。

正確なコードはキャンバスページで機能し、署名されたリクエストを解析できます。

彼らの最近の発表で私が見逃しているものはありますか?

ちなみに、アプリはマーケットプレイスに公開されておらず、私のタブがインストールされているファンページは非公開です。それは違いを生むでしょうか?

-セト

17
Seth Brown

さて、それを理解しました!アプリを設定するときに、「タブURL」を「tab /」に入力しました。これにより、タブページへの完全なURLが作成されました」http://www.example .com/myfacebookapp/tab / "これは私には理にかなっています。

どうやら、Facebookはこれが好きではありません。 「タブURL」を「tab/index.php」に変更した後、署名されたリクエストがアプリタブに表示され始めました!

40
Seth Brown

基本的に、問題は、Webサーバーが要求を受信したときにリダイレクトを実行していることです。あなたの場合、それは http://www.example.com/myfacebookapp/tab/ から http://www.example.com/myfacebookapp/tab/index.php)にリダイレクトしています。 ;私の場合、それは http://www.example.com/myfacebookapp/tab から http://www.example.com/myfacebookapp/tab/ (私のアプリは.NetMVCに組み込まれているため、ファイル名はありませんが、末尾にスラッシュが必要なようです)。

したがって、標準的な解決策は、[タブURL]フィールドのパスが実際のURLであり、Webサーバーがリダイレクトするパスではないことを確認することです。 Webサーバーがリダイレクトを行う必要がある場合、実際のページはGET(POSTではなく)によってフェッチされ、スクリプトにsigned_requestpostdataは提供されません。

非常にイライラします。テストアプリが機能し、本番アプリが機能しなかった理由をデバッグするのに1時間半を費やしました。さらに悪いことに、私はこの答えを知っていました、それはこれが問題であったことを登録していませんでした。とても刺激的です!

8
Owen Blacker

解決策を見つけました。タブのURLの最後に「/」を付けるだけです。いいね:「http://domain.us/facebook/tab/」

それは私のために働きました、それがあなたのためにも働くかどうか私たちに知らせてください!

4
Michael Ionita

おかげでセス私は同じ問題を抱えていました。アプリのキャンバスページで署名されたリクエストを取得できましたが、ページタブでは取得できませんでした。明確にするために

  1. www.facebook.com/developers/にアクセスします
  2. アプリの設定の編集をクリックします
  3. facebook統合タブをクリックします
  4. [タブURL]フィールドの[ページタブ]セクションの下部で、Facebookのランディングページのindex.phpページへのパスを入力します

例ページがwww.foobar.com/facebook/tab/index.phpにある場合は、単に「tab /」ではなく、「tab/index.php」(引用符なし)を配置する必要があります。

何日もこれを理解しようとしています!

4
Devin Crossman

アプリケーションで認証されると、以下のURLのように認証されたsigned_requestデータを取得します。

0
sadik