2011-03-16 30 views
0

我已經成功地設置Facebook插件喬斯位於(https://github.com/jos3000/phonegap-plugins/tree/master/Android/Facebook) - 但我似乎無法找出將用戶註銷的方法。當然,我可以告訴他們刪除網站上的應用訪問權限,然後再次嘗試登錄並點擊「不是你?」。但我真的很想有一個JS函數爲我做。從Android的Facebook登錄Phonegapgap

任何人都可以幫助提供一些指導如何做到這一點?我瀏覽過這些文件,看起來有一種方法可以在facebook.java中完成,但我只需要將它們連接到一起以將其連接到webview。我不能這樣做:)任何人都可以請幫忙嗎?

在FacebookAuth.Java文件
+0

嗨**亨利**我有問題登錄Facebook。我不認爲你在登錄時有任何問題,所以你可以發佈你用於登錄的代碼。 – 2012-01-02 13:38:55

回答

3

該溶液是禁用單個符號上特徵在Facebook的插件

在FaceBook.java 文件

取代DEFAULT_AUTH_ACTIVITY_CODE授權方法[2個重載]通過FORCE_DIALOG_AUTH

+0

謝謝穆罕默德!此代碼用於強制非SSO登錄 - 這是一個不錯的選擇。 BUt我仍然無法得到下面的代碼工作。我得到了成功回調的工作 - 但它實際上並沒有做任何事情。我可能知道我爲什麼這麼想 - 我的應用程序所做的就是捕獲令牌並使用該令牌進行調用。由於您的方法不撤銷對應用程序的訪問 - 清除任何緩存的數據不會導致重新登錄。我想我只是保持原樣並指示用戶在桌面上刪除我的應用程序。除非你有另一個建議? – Henry 2011-04-02 22:19:01

0

追加這facebook中執行方法[在開關殼體部]

else if (action.equals("performLogout")){ 
this.performLogout(first);} 

//添加此方法來FacebookAuth.java類

public void performLogout(final String appid) { 
    Log.d("PhoneGapLog", "LOGOUT"); 
    final FacebookAuth fba = this; 
    Runnable runnable = new Runnable() { 
     public void run() { 
      fba.mFb = new Facebook(appid); 
      fba.mFb.setPlugin(fba); 
      try { 
       fba.mFb.logout((Activity) fba.ctx); 
       fba.success(new PluginResult(PluginResult.Status.OK, ""), fba.callback); 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     }; 
    }; 
    this.ctx.runOnUiThread(runnable); 
} 

// .js文件添加以下部分

Facebook.prototype.Logout = function(app_id,callback){ 
PhoneGap.exec(callback,null, "FacebookAuth", "performLogout", [app_id]); }; 

//在您的頁面中添加以下代碼

function LogoutClick() //on logout click 
{ 
    appId = "123" ; //your app Id 
    window.plugins.facebook.Logout(appId,CompleteLogout); 
} 

function CompleteLogout() //call back function 
{ 
    //do some logic for callback 
} 

//享受.. !!

+0

謝謝穆罕默德!它看起來像這個方法正在打電話給https://api.facebook.com/restserver.php?method=auth.expireSession&format=json 是否是一種安全的註銷方式? Facebook目前正在棄用該方法。另外,我不確定它是否正在工作......我相信這應該會使我的訪問令牌失效,並讓我需要重新請求一個?由於什麼原因,它不工作,我不知道足夠的Java進行故障排除。有沒有辦法讓回調顯示Facebook的迴應?這可能會幫助我排除故障。 – Henry 2011-03-26 05:27:46

+0

嗨,亨利,這不完全是它的工作原理,它只是清除您的應用程序的Facebook cookie,所以下次需要登錄時,Facebook會顯示您的電子郵件/密碼錶單。 – 2011-03-28 13:11:19

+0

並且它不調用Facebook API,因此,您已從應用程序本身註銷,而不是從Facebook登出 – 2011-03-28 13:12:25