私はfacebookで動作する私のウェブサイトのユーザログイン/ログアウトの仕組みを設計するのに少し問題があります。JS SDKの本質に混乱Facebookのイベント
特定のFacebookのイベントの動作は直感に反するようだ:。
ユーザーがログインしているすべてのページのロードの火事「auth.login」
FB.getLoginStatusは()すべてのページのロードに発射します
'auth.logout'は、ユーザーが実際にログアウトしたときにのみ起動し、 'auth.login'とは異なり、ユーザーがログインしていないときはすべてのページが読み込まれません。
私はシステムを構築したいと思います。ユーザーセッションがFacebookにログインしていると思うかどうかを判断します。ユーザーのセッションがfacebookにログインしていると思われるように設定されていても、実際にはサーバーへのajax呼び出しを実行せずにセッションを更新します。セッションとfacebook js sdkが、ユーザーがログインしているかどうかで一致している場合は、何もしないでください。ユーザーのセッションがFacebookにログインしているのに気付かず、js sdkがそうであると答えた場合は、サーバーをajax呼び出しで更新します。
現在のFacebookのログインステータスと同期するアプリケーションを作成したいと考えています。 Facebookのステータスが変わるたびに、そのアプリケーションをログイン/ログアウト(自分のセッションを更新するために私のサーバーにajax呼び出しを実行することによって)したいと思います。ユーザーがフェイスブックにログインしたときやログアウトしたときに確実に検出できないため、これは困難です。
私が持っている特に問題の1つは、ユーザーがページを読み込み、facebookにログインしたときに、auth.loginイベントとFB.getLoginStatus()イベントが同時に起動することです。
究極の質問は、このようなアプリケーションを作成するためにFacebookのイベントや一般的な戦略をどのように組み合わせる必要があるかということです。私がしようとしていることの良い例は、hulu.comのウェブサイトへのFacebookログインの実装です。これを読んでくれてありがとう!
<script>
window.fbAsyncInit = function() {
FB.init({appId: '<?=$facebook_app_id?>',
status: true,
cookie: false,
xfbml: true});
FB.getLoginStatus(function(response) {
console.log('getLoginStatus');
console.log(response);
if(response.session){
if(window.module.Globals.prototype.oauth_uid != response.session.uid){
//authenticated user unknown to server, update server and set session
window.module.VCAuth.prototype.session_login();
}
}else{
if(window.module.Globals.prototype.oauth_uid){
//unauthenticated user with authenticated session, update server and unset session
window.module.VCAuth.prototype.session_logout();
}
}
});
FB.Event.subscribe('auth.login', function(response){
console.log('auth.login');
console.log(response);
});
FB.Event.subscribe('auth.logout', function(response){
console.log('auth.logout');
console.log('response');
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
あなたはdo.Evenに似たようなことをしようとしていますが、私は正しくログアウトして彼をログアウトさせることができません。彼は自動的にログインしています。 –