これは私にかなりの頭痛の種を与えています。私はpage-tab-applicationを持っています。ここでは、DB-interactionがfacebook-user-idを使用してデータを割り当てて保存し、ユーザーのアクセス許可を確認します。弱い前まではすべてが正常に機能していましたが、12月の変更により、この設定は機能しなくなりました。
config.php:
$facebook = new Facebook( array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
index.php: config.phpを含み、署名されたリクエストを取得します(質問には重要ではありません)
javascript.js: read-user-status.phpを呼び出し、データを処理します
read-user-status.php: json-responseを提供し、config.phpをインクルードし、$ facebook-> getUser()-functionを呼び出してuidを取得します
ページの読み込み直後にindex.phpから呼び出された場合でも、uidを取得することもあれば、取得しないこともあります。ひどく、私は通常、ページをリロードしてから再び機能するまで少し待たなければなりません。しかし、これが常に当てはまるとは限りません。これはすべて私にとって非常に奇妙です。
編集:この呼び出しについて言及する必要があります:
$uid = $facebook -> getUser();
if ($uid) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook -> api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$uid = FALSE;
echo "EXCEPTION $e";
}
}
「EXCEPTION現在のユーザーに関する情報を照会するには、アクティブなアクセストークンを使用する必要があります」と表示されます。
似たような質問がたくさんあることは知っていますが、私の特定の(そしておそらく新しい重大な変更が依存している)問題に役立つ答えはありませんでした。
EDIT2:これはsdk-bugだと思います(https://developers.facebook.com/bugs/238039849657148、CBroeに感謝します)。もちろん、回避策に関する推奨事項は大歓迎です。
編集3、 一時的な解決策ajaxリクエストを行うたびに、FB.getLoginStatusまたはFB.loginから取得したトークンを投稿し、phpファイルに読み込んで、$facebook->setAccessTokenで設定します。すべての状況に適しているわけではなく(間違いなくpostを使用する必要があります)、速度が遅く、セキュリティ上の問題が発生しますが、それでも機能します。