Android 注销Facebook时出错
我已经在我的应用程序中集成了Facebook,它在登录时运行良好,但当我尝试注销时,我遇到了许多无法解决的错误。在stack overflow(,)中也有类似的问题,但这篇文章的解决方案对我来说并不合适。 这是我的密码:Android 注销Facebook时出错,android,facebook,exception,Android,Facebook,Exception,我已经在我的应用程序中集成了Facebook,它在登录时运行良好,但当我尝试注销时,我遇到了许多无法解决的错误。在stack overflow(,)中也有类似的问题,但这篇文章的解决方案对我来说并不合适。 这是我的密码: public class Main extends Activity { DrawerLayout drawerlayout; ListView LVdrawer; ImageView toplogo; View rL; Facebook
public class Main extends Activity {
DrawerLayout drawerlayout;
ListView LVdrawer;
ImageView toplogo;
View rL;
Facebook fb;
Handler handler;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.navigation_drawer);
rL = findViewById(R.id.toplogoaction);
handler=new Handler();
drawerlayout = (DrawerLayout) findViewById(R.id.drawer_layout);
LVdrawer = (ListView) findViewById(R.id.left_drawer);
LVdrawer.setAdapter(new CustomAdapter(this, 0));
fb=new Facebook(getString(R.string.APP_ID));
get();
LVdrawer.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView ttt = (TextView) view.findViewById(R.id.detail);
String s = (String) ttt.getText();
drawerlayout.closeDrawers();
switch (s) {
case "Now":
if(fb.isSessionValid()){
Runnable runnable=new Runnable() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Toast.makeText(getApplicationContext(), "Loggedout", Toast.LENGTH_SHORT).show();
fb.logout(getApplicationContext());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// TODO Auto-generated method stub
}
};
new Thread(runnable).start();
}
break;
}
}
});
}
@SuppressWarnings("deprecation")
private void get() {
SharedPreferences Logininfo = getSharedPreferences("accesstoken", MODE_PRIVATE);
if (Logininfo.getString("access_token", null) != null) {
fb.setAccessToken(Logininfo.getString("access_token", null));
if (Logininfo.getLong("access_expires", 0) != 0)
fb.setAccessExpires(Logininfo.getLong("access_expires", 0));
}
}
}
使用AsyncTask后更新(Logcat):
09-15 16:42:11.022: D/Facebook-Util(14618): GET URL: https://api.facebook.com/restserver.php?access_token=CAAMKZCWmSwAABAC5ZB3hbry1FLMNdsKssmaS1OpiUxCK9ZAnn3OCKclKNAJ0DTVaf5M6d9QREeTZAsJWKNFWrt65vH5STZBeW0dL9A1l59xSuuqh1RmZALDgFLIxZBiEsXTGE4bR1pkEFQZBA8DfK81ZAjbe1V34JBddgrr0UxKOYkNDqEJc1WWZB8H9TZCbMZCpZCEk6ESusNzxBldzpVKHZBnNNr&format=json&method=auth.expireSession
09-15 16:42:12.626: W/dalvikvm(14618): threadid=12: thread exiting with uncaught exception (group=0x415ecd40)
09-15 16:42:12.630: E/AndroidRuntime(14618): FATAL EXCEPTION: AsyncTask #1
09-15 16:42:12.630: E/AndroidRuntime(14618): Process: com.example.apeonomy, PID: 14618
09-15 16:42:12.630: E/AndroidRuntime(14618): java.lang.RuntimeException: An error occured while executing doInBackground()
09-15 16:42:12.630: E/AndroidRuntime(14618): at android.os.AsyncTask$3.done(AsyncTask.java:300)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
09-15 16:42:12.630: E/AndroidRuntime(14618): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.lang.Thread.run(Thread.java:841)
09-15 16:42:12.630: E/AndroidRuntime(14618): Caused by: java.lang.IllegalArgumentException: Invalid context argument
09-15 16:42:12.630: E/AndroidRuntime(14618): at android.webkit.CookieSyncManager.createInstance(CookieSyncManager.java:90)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.facebook.internal.Utility.clearCookiesForDomain(Utility.java:324)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.facebook.internal.Utility.clearFacebookCookies(Utility.java:348)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.facebook.Session.closeAndClearTokenInformation(Session.java:801)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.facebook.android.Facebook.logoutImpl(Facebook.java:665)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.facebook.android.Facebook.logout(Facebook.java:642)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.digiapes.apeonomy.Main$myAsy.doInBackground(Main.java:164)
09-15 16:42:12.630: E/AndroidRuntime(14618): at com.digiapes.apeonomy.Main$myAsy.doInBackground(Main.java:1)
09-15 16:42:12.630: E/AndroidRuntime(14618): at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-15 16:42:12.630: E/AndroidRuntime(14618): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-15 16:42:12.630: E/AndroidRuntime(14618): ... 4 more
在com.facebook包中的FacebookSDK中创建此类
package com.facebook;
import android.content.Context;
public class Door {
public static void initializeStaticContext(Context context) {
Session.initializeStaticContext(context);
}
}
调用Door.initializeStaticContext(this.getApplicationContext())代码>在调用注销之前
package com.facebook;
import android.content.Context;
public class Door {
public static void initializeStaticContext(Context context) {
Session.initializeStaticContext(context);
}
}