リバースプロキシ経由でWebサーバにつなぐような構成の場合
Facebookインスタンス生成時にtrustForwardedをtrueにする必要があります
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
'allowSignedRequest' => false,
'trustForwarded' => true
));
リクエスト上のドメインが登録済みのものであっても、プロキシ経由でtrustForwardedがfalseになっていると、$_SERVER['HTTP_X_FORWARDED_HOST']
ではなく$_SERVER['HTTP_HOST']
を見に行ってしまい、リダイレクトURIのチェックでエラーになってしまいます
An active access token must be used to query information about the current user.
通常、リダイレクト先のドメインが登録されていないと
以下のような画面が表示されるため、解決するのに非常に苦労しました。
指定されたURLは、アプリケーションの設定で許可されていません。: 指定されたURLの中にアプリの設定で認められないものが含まれています。ウェブサイトまたはキャンバスのURLと一致しているか、ドメインがアプリのドメインのサブドメインである必要があります。