4

私の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であるため、後で例外が発生します。

4

1 に答える 1

1

Facebook SDK は、ログイン データをセッションに保存します。あなたのAJAXリクエストwrite.phpは完全なFacebook POSTデータを送信しないため、facebookクラスは署名されたリクエストがなく、したがってデータがないと想定します。

何度か同じ動作に遭遇しましたが、セッションが正しく確立されていないという問題が常にありました。残念ながら、正確な原因が何であったかはよくわかりません。

于 2013-01-23T16:26:30.917 に答える