私のFacebookアプリには、この基本的なコードを使用するindex.phpとwrite.phpの2つのファイルがあります。
require_once('AppInfo.php');
if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
header('Location: https://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit();
}
require_once('utils.php');
require_once('sdk/src/facebook.php');
$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
));
$user_id = $facebook->getUser();
index.phpがロードされた後、ajaxリクエストがwrite.phpに送信されます。write.phpはFacebookにクエリを送信し、結果をテキストファイルに書き込みます。write.phpは、同じコードを使用してFacebookオブジェクトを初期化します。
これはローカルでテストすると正常に機能しますが、Herokuにアップロードすると任意の結果が得られます。$ user_idがnullであり、コードがif($ user_id)を超えることができないか、$ user_idの値が0であるため、後で例外が発生します。