首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >注销Facebook时出错

注销Facebook时出错
EN

Stack Overflow用户
提问于 2014-09-15 18:45:06
回答 1查看 98关注 0票数 0

我已经在我的应用程序中集成了Facebook,在登录时工作得很好,但当我试图注销时,我得到了许多我无法解决的错误。在堆栈溢出(Facebook Log Out error in AndroidCan't create handler inside thread which has not called Looper.prepare())中也有类似的问题,但针对该帖子的解决方案对我来说并不适用。下面是我的代码:

代码语言:javascript
运行
复制
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));
        }

    }


 }

Logcat:

代码语言:javascript
运行
复制
09-15 16:16:40.138: D/Facebook-Util(9594): GET URL: https://api.facebook.com/restserver.php?access_token=CAAMKZCWmSwAABAC5ZB3hbry1FLMNdsKssmaS1OpiUxCK9ZAnn3OCKclKNAJ0DTVaf5M6d9QREeTZAsJWKNFWrt65vH5STZBeW0dL9A1l59xSuuqh1RmZALDgFLIxZBiEsXTGE4bR1pkEFQZBA8DfK81ZAjbe1V34JBddgrr0UxKOYkNDqEJc1WWZB8H9TZCbMZCpZCEk6ESusNzxBldzpVKHZBnNNr&format=json&method=auth.expireSession
09-15 16:16:40.211: D/AndroidRuntime(9594): Shutting down VM
09-15 16:16:40.211: W/dalvikvm(9594): threadid=1: thread exiting with uncaught exception (group=0x415ecd40)
09-15 16:16:40.217: E/AndroidRuntime(9594): FATAL EXCEPTION: main
09-15 16:16:40.217: E/AndroidRuntime(9594): Process: com.example.apeonomy, PID: 9594
09-15 16:16:40.217: E/AndroidRuntime(9594): android.os.NetworkOnMainThreadException
09-15 16:16:40.217: E/AndroidRuntime(9594):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.facebook.android.Util.openUrl(Util.java:224)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.facebook.android.Facebook.requestImpl(Facebook.java:804)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.facebook.android.Facebook.request(Facebook.java:707)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.facebook.android.Facebook.logoutImpl(Facebook.java:649)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.facebook.android.Facebook.logout(Facebook.java:642)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.digiapes.apeonomy.Main$1$1$1.run(Main.java:92)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at android.os.Handler.handleCallback(Handler.java:733)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at android.os.Looper.loop(Looper.java:136)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at android.app.ActivityThread.main(ActivityThread.java:5086)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at java.lang.reflect.Method.invokeNative(Native Method)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at java.lang.reflect.Method.invoke(Method.java:515)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-15 16:16:40.217: E/AndroidRuntime(9594):     at dalvik.system.NativeStart.main(Native Method)
09-15 16:16:46.330: I/Process(9594): Sending signal. PID: 9594 SIG: 9

使用AsyncTask后更新(日志目录):

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2015-04-24 14:27:12

在com.facebook包中的FacebookSDK中创建此类

代码语言:javascript
运行
复制
package com.facebook;

import android.content.Context;

public class Door {
  public static void initializeStaticContext(Context context) {
    Session.initializeStaticContext(context);
  }
}

在调用注销之前调用Door.initializeStaticContext(this.getApplicationContext());

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25846260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档