0

facebooksdk.framework3.1を使用しています


アカウントでアプリにログインすると、Webベースの認証が完了していても、ネイティブログインダイアログが表示されます。ネイティブログインダイアログまたはWebベースの認証をオフにする必要がありますが、方法がわかりません。

facebook.mファイルを見つけようとしましたが、facebooksdk.framework3.1にそのようなファイルがありませんでした

safariauthまたはnativeauthをオフにするにはどうすればよいですか?2つのログインプロセスが同時に発生するのは非常に奇妙です。

4

2 に答える 2

1

まず、facebook.m ページにアクセスして、次の方法を見つけてください。

- (void)authorize:(NSArray *)permissions
         delegate:(id<FBSessionDelegate>)delegate
       localAppId:(NSString *)localAppId 

このメソッドには次の行があります。[self authorizeWithFBAppAuth:YES safariAuth:NO];

必要に応じて、authorizeWithFBAppAuth と safariAuth を yes/no に変更します。

または、最新の共有キット sdk.it を実装してみるのが最善の方法です。

于 2012-11-23T07:27:54.487 に答える
-2

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」の値を比較して、ユーザーがログに記録されているかどうかを確認します。

于 2012-11-26T05:23:01.240 に答える