phonegap facebook プラグインを使用する場合は、FB.getLoginStatus() を慎重に呼び出す必要があります。
FB.init() が完了する前に FB.getLoginStatus() が起動した場合、関数は次のような応答を返します。
ユーザーが既に接続されている場合でも、「接続されていません」。
ログインの問題は、リダイレクトされたページの FB.getLoginStatus() が原因でした。
ユーザーがログインに成功し、リダイレクトされたページに進んだ場合でも、ページは FB.getLoginStatus() を実行します
FB.init() が完全に実行されていないため、結果は常に「接続されていません」でした。
facebook はこの問題を解決する非同期機能を提供していますが、phonegap でテストしたときは機能しませんでした。
ユーザーのログインを確認するには、今のところ FB.Event.subscribe と localstorage を使用します。
FB機能が必要なページに、このJavaScriptコードを追加しました
FB.Event.subscribe('auth.login', function(response){
localStorage.setItem('fblogin', true);
console.log('login event');
}
FB.Event.subscribe('auth.logout', function(response){
localStorage.setItem('fblogin', false);
console.log('logout event');
}
document.addEventListener('deviceready', function(){
try{
FB.init({ appId : '1234567889' , nativeInterface : CDV.FB, useCachedDialogs : true});
}catch(e){
alert(e);
}
var fbval = localStorage.getItem('fblogin');
if(fbval){
// your code for connected status
}
});
基本的に、ログイン イベントが発生するたびに「fblogin」の localStorage 値を true
に設定し、ログアウト イベントが発生するたびに値を「false」に設定します。
「fblogin」の値を比較して、ユーザーがログに記録されているかどうかを確認します。