2012-11-15 63 views
1

在我的android應用程序中,使用Facebook帳戶我可以登錄到我的應用程序,但是當我嘗試從Facebook(從應用程序)註銷時,顯示錯誤。在Android應用程序的facebook註銷錯誤

這是我的代碼。

mAsyncRunner.logout(this, new RequestListener() { 
     @Override 
     public void onComplete(String response, Object state) { 
      Log.d("Logout from Facebook", response); 
      if (Boolean.parseBoolean(response) == true) { 
       runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         // make Login button visible 


        } 

       }); 

      } 
     } 

錯誤

6月11日至15日:58:22.480:E/AndroidRuntime(947):致命異常:螺紋98 6月11日至15日:58:22.480:E/AndroidRuntime( 947):java.lang.IllegalArgumentException:無效的上下文參數 11-15 06:58:22.480:E/AndroidRuntime(947):at android.webkit.CookieSyncManager.createInstance(CookieSyncManager.java:86) 11-15 06: 58:22.480:E/AndroidRuntime(947):at com.facebook.Utility.clearCookiesForDomain(Utility.java:370) 11-15 06:58:22.480:E/AndroidRuntime(947):at com.facebook.Utility。 C learningFacebookCookies(Utility.java:394) 11-15 06:58:22.480:E/AndroidRuntime(947):at com.facebook.Session.closeAndClearTokenInformation(Session.java:673) 11-15 06:58:22.480: E/AndroidRuntime(947):at com.facebook.android.Facebook.logoutImpl(Facebook.java:652) 11-15 06:58:22.480:E/AndroidRuntime(947):at com.facebook.android.AsyncFacebookRunner $ 1 .RUN(AsyncFacebookRunner.java:86)

Utility.java這是爲了解決地方CookieManager可能會失敗,如果CookieSyncManager從未創建過實例化的錯誤。

CookieSyncManager syncManager = CookieSyncManager.createInstance(context); 

請提出這方面的任何解決方案...

回答

0

我在仍在使用在這個問題上所用現在已經過時註銷方法的舊應用程序越過這個錯誤跑去。我選擇修補SDK來快速修復,而不是升級,因爲時間不夠。

作爲堆棧跟蹤所暗示的,問題是,在這條線,傳遞給CookieSyncManager上下文參數爲空:

android.webkit.CookieSyncManager.createInstance(CookieSyncManager.java:86)

如果您繼續深入堆棧,可以看到傳入的Context參數是Facebook SDK中Session類的staticContext成員變量。無論出於何種原因,他們都將此變量設置爲null,因此在調用註銷時,應用程序會崩潰並出現此異常。

爲了解決這個問題,我只編輯了Session類來使initializeStaticContext成爲一個公共方法。然後,請在致電註銷前致電:

Session.initializeStaticContext(this.getApplicationContext()); 
mAsyncRunner.logout(... 

當然,這不是最好的解決方案,但它可以完成工作。

相關問題