Android facebook sdk 3.0注销无法正常工作?

时间:2013-02-04 12:53:56

标签: android facebook facebook-graph-api

我正在使用facebook sdk 3.0登录我的应用程序。登录工作正常。一旦我注销我的应用程序,它就不会发生。

我的退出代码:

Facebook mFb=new Facebook("xxxxxxxx");
mFb.logout(this);

给我一​​些想法。

6 个答案:

答案 0 :(得分:6)

我一直面临同样的问题,最后我发现了这个问题

public void logout()
{
    Session session = Session.getActiveSession();
    if (session != null) {
        session.closeAndClearTokenInformation();
    }
    else
    {
        Session session2 = Session.openActiveSession((Activity)context, false, null);
        if(session2 != null)
            session2.closeAndClearTokenInformation();
    }
    Session.setActiveSession(null);

}

我不知道里面会发生什么,但我想我们必须创建新的会话,如果找不到它并清除它的令牌信息。 它对我有用。希望它会有所帮助。

答案 1 :(得分:2)

试试这个:

if( mFb.isSessionValid() ) {                                  
    mFb.logout(getApplicationContext());
    SessionStore.clear(getApplicationContext());
}

答案 2 :(得分:2)

并且:工作正常

Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(final Session session, final SessionState state, Exception exception){
    // TODO Auto-generated method stub
    if(session.isOpened()){
        Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
            @Override
            public void onCompleted(GraphUser user, Response response) {
            // TODO Auto-generated method stub
                if(user!=null){
                    try{
                        session.close();
                        session.closeAndClearTokenInformation();
                        //state.isClosed();
                    }catch (Exception e) {
                        Log.e(tag, "getUserIdMethod--->"+e);
                    }

                }
            }
        });                 
    }
}});

答案 3 :(得分:1)

对于Facebook使用:

LoginManager.getInstance().logOut();

退出。

答案 4 :(得分:0)

答案 5 :(得分:0)

您是否尝试在单独的线程上调用它:

public void logout()
    {
        new Thread(){
            public void run() {
                try {
                    mFacebook.logout(your_current_class_name.this);
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            };
            }.start();
    }