0

Facebookアプリをセットアップし、ファンページのタブとして追加しました。

ユーザーとしてログインし、アプリページの直接URLをリクエストすると、すべてが正しいことがわかります。

ただし、@ facebookにログインしておらず、直接URLにアクセスすると、アプリページに何も表示されません。キャンバスに最大高さ100pxの白い背景を表示しているだけです。

そのページから自然にログインでき、ログインからのコールバック後、アプリページが再び正常に表示されます。

私はそれが私のコードと関係があるのではないかと考えました。しかし、その後、index.phpファイルのすべてをテスト削除し、静的なダミーテキストのみを追加しました。それでも何も表示されません。

何か案は?

編集1:これは、アプリキャンバス用に定義されたURLのすべてのリクエストをhttpsにリダイレクトすることと関係があると思います。Facebookも何らかの理由で同じURLのhttpにアクセスする必要がある可能性があることをどこかで読みました。しかし、これを裏付けるものはまだ見つかりませんでした。

編集2:静的テキストを含む空白のindex.phpを使用しても何も起こらなかったので、これが何かであるかどうかはわかりません。しかし、スクリプト全体をオンにしてエラーをオンにすると、$signed_requestでいくつかのエラーが発生します。取得できないときに呼び出しているためだと思います。どうしたらよいかわかりませんが、誰かが何かを見ることができる場合に備えて、とにかくコードを投稿してください。

function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
  }

if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) {
          //echo "This content is for Fans only!";
          $amFan = "true";
    } else {
          //echo "Please click on the Like button to view this tab!";
          $amFan = "false";
    }
}
4

1 に答える 1

0

ユーザーがまったくログインしていないときにsigned_requestはありますか?

そうでない場合、コードはfalseを返し、の設定を完全にparsePageSignedrequest()スキップします-その場合、コードの残りの部分は機能しますか?$amFan

于 2012-11-27T23:43:26.340 に答える