0
我一直有一個問題,當我嘗試從我的應用程序從Facebook註銷。 每次我嘗試註銷時,我都會收到NullPointerException
。在logcat中給出了以下內容:在我的onCreate方法Android的Facebook登出
04-24 11:41:03.853: E/AndroidRuntime(523): FATAL EXCEPTION: main
04-24 11:41:03.853: E/AndroidRuntime(523): java.lang.NullPointerException
04-24 11:41:03.853: E/AndroidRuntime(523): at android.webkit.CookieSyncManager.createInstance(CookieSyncManager.java:96)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.facebook.internal.Utility.clearCookiesForDomain(Utility.java:261)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.facebook.internal.Utility.clearFacebookCookies(Utility.java:285)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.facebook.Session.closeAndClearTokenInformation(Session.java:593)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.facebook.android.Facebook.logoutImpl(Facebook.java:667)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.facebook.android.Facebook.logout(Facebook.java:644)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.ali.health.and.fitness.exercises.FacebookIntegration$1.onClick(FacebookIntegration.java:83)
04-24 11:41:03.853: E/AndroidRuntime(523): at android.view.View.performClick(View.java:2408)
04-24 11:41:03.853: E/AndroidRuntime(523): at android.view.View$PerformClick.run(View.java:8816)
04-24 11:41:03.853: E/AndroidRuntime(523): at android.os.Handler.handleCallback(Handler.java:587)
04-24 11:41:03.853: E/AndroidRuntime(523): at android.os.Handler.dispatchMessage(Handler.java:92)
04-24 11:41:03.853: E/AndroidRuntime(523): at android.os.Looper.loop(Looper.java:123)
04-24 11:41:03.853: E/AndroidRuntime(523): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-24 11:41:03.853: E/AndroidRuntime(523): at java.lang.reflect.Method.invokeNative(Native Method)
04-24 11:41:03.853: E/AndroidRuntime(523): at java.lang.reflect.Method.invoke(Method.java:521)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-24 11:41:03.853: E/AndroidRuntime(523): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-24 11:41:03.853: E/AndroidRuntime(523): at dalvik.system.NativeStart.main(Native Method)
我已經初始化一切:
String APP_ID = getString(R.string.APP_ID);
fb = new Facebook(APP_ID);
sp = getPreferences(MODE_PRIVATE);
String access_token = sp.getString("access_token", null);
long expires = sp.getLong("access_expires", 0);
if(access_token!=null)
{
fb.setAccessToken(access_token);
}
if(expires!=0)
{
fb.setAccessExpires(expires);
}
logout = (Button)findViewById(R.id.button1);
我註銷監聽器將執行以下操作:
logout.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
if(fb.isSessionValid())
{
try {
fb.logout(FacebookIntegration.this);
Editor editor = sp.edit();
editor.clear();
editor.commit();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
fb.authorize(FacebookIntegration.this,new String[]{"email"},Facebook.FORCE_DIALOG_AUTH ,new DialogListener() {
@Override
public void onFacebookError(FacebookError e) {
Toast.makeText(FacebookIntegration.this, "onFacebookCancel", Toast.LENGTH_SHORT);
}
@Override
public void onError(DialogError e) {
Toast.makeText(FacebookIntegration.this, "onError", Toast.LENGTH_SHORT);
}
@Override
public void onComplete(Bundle values) {
Toast.makeText(FacebookIntegration.this, "onComplete", Toast.LENGTH_SHORT);
Editor editor = sp.edit();
editor.putString("access_token", fb.getAccessToken());
editor.putLong("access_expires", fb.getAccessExpires());
editor.commit();
}
@Override
public void onCancel() {
Toast.makeText(FacebookIntegration.this, "onCancel", Toast.LENGTH_SHORT);
}
});
}
}
});
它主要有兩個邏輯,它如果會話有效則註銷,否則將用戶登錄。
任何想法wh我有例外嗎?我開始認爲這是與我通過的Context
有關,但不完全確定。
有時,按鈕似乎只是工作,有時它會拋出異常。
謝謝
以前是用getApplicationContext()試過,同樣的問題仍然存在。 – 2013-04-24 11:56:24
現在我省略了整個註銷方法,它似乎工作。 – 2013-04-24 11:57:38
我做了一些編輯。現在嘗試一下。我希望這會起作用。 – Rohit 2013-04-24 12:01:27