私はsymfony 2で書かれたアプリケーションを持っています(そしてfosubからのカスタムuserproviderでfosfacebookbundleを使用しています)。私はそのアプリケーションでfacebookのjs sdkとphp sdkを使用しています。私のアプリにログインすると、サーフィンが可能です。AIがユーザーのFacebookの友達を表示するページが1つあります。私のバックエンドでは、そのリクエストに /me/friends を使用しています。そのページに約 1 時間とどまり、何の活動もなしに友達が表示されているとしましょう。その時間後にページを更新すると、次のメッセージが表示されます。
An exception has been thrown during the rendering of a template ("An active access token must be used to query information about the current user.") in
それはどういうわけか私を混乱させます。直接の「Facebook リクエスト」が行われていない私のウェブサイトの他のページにアクセスすることはできます。他のページで Facebook の access_token を var_dump すると、見た目が異なります。たとえば、同じブラウザーで Facebook にログインし、Facebook を介してアプリケーションにログインすると、表示するページで次の access_token を取得します。ユーザーの友人: AAACbRz2shZAIBAFX66jLuQktdlzzIx52lnSvgZB5hiNNxvy0lPbKMcUsC1BHLTnaAllXI9WN7dRHfa5TOj4HmZBjdwgjP5In46dMYSGZBfWrj
Facebook が同じブラウザーの別のタブで開かれています。Facebook からログアウトして、ユーザーの友人が表示されている Web サイトのページを更新すると、上記の例外メッセージが表示されます。別のページを参照し、var_dump で access_token を実行すると、string(48) "170732376699858|6c2b4d7ca20f8a607418845634356" が表示されます。
そのため、ユーザーの Facebook の友達が表示されるページだけが正しく機能していません。
jsサイトで私は次のことをしています:
function onFbInit() {
if (typeof(FB) != 'undefined' && FB != null ) {
FB.Event.subscribe('auth.authResponseChange', function(response) {
$.each(reponse, function(e) {
alert(e);
});
});
FB.Event.subscribe('auth.statusChange', function(response) {
if (response.session || response.authResponse) {
setTimeout(goLogIn, 500);
} else {
window.location = "{{ path('_security_logout_fb') }}";
}
});
} else {
setTimeout(goLogIn, 500);
}
}
私が間違っていることは何ですか?access_tokenが有効かどうかをphp sdk経由で確認する方法はありますか? ドキュメントを読みましたが、どういうわけか方法が見つかりませんでした。
オフラインの acces_token は廃止されるため使用していません
ありがとう、ラモ