2014-01-30 38 views
0

我正在开发一个项目。在第一次活动中,我使用Facebook登录并记录了新的活动启动之后。在哪里我想从Facebook注销。如何在第二次活动中从Facebook注销。 PLZ帮助我。Facebook从另一活动注销

回答

0

尝试这样:下面的代码

if (Session.getActiveSession() != null) { 
    Session.getActiveSession().closeAndClearTokenInformation(); 
} 
Session.setActiveSession(null); 
+0

它不适用于第二项活动。 – Amardeepvijay

+0

你在第二次活动中得到了什么错误..从我的理解你需要将facebook会话作为参数传递给下一个活动 –

+0

如何将fb会话从一个活动传递给另一个活动?我正在使用sp和access_token。 – Amardeepvijay

0

使用。

FBLogout.setOnClickListener(new OnClickListener() { 
    @Override 
     public void onClick(View v) { 
      clearApplicationData(); 
      FBHandler.getInstance(this).facebookLogout(); 
     } 
}); 


public void clearApplicationData() { 
     File cache = getCacheDir(); 
     File appDir = new File(cache.getParent()); 
     if (appDir.exists()) { 
      String[] children = appDir.list(); 
      for (String s : children) { 
       if (!s.equals("lib") && !s.equals("files")) { 
        deleteDir(new File(appDir, s)); 
        Log.i("TAG", 
          "**************** File /data/data/APP_PACKAGE/" + s 
            + " DELETED *******************"); 
       } 
      } 
     } 
    } 

    public static boolean deleteDir(File dir) { 
     if (dir != null && dir.isDirectory()) { 
      String[] children = dir.list(); 
      for (int i = 0; i < children.length; i++) { 
       boolean success = deleteDir(new File(dir, children[i])); 
       if (!success) { 
        return false; 
       } 
      } 
     } 

     return dir.delete(); 
    } 

FBHandler.java

public class FBHandler 
{ 
    private static final String TAG ="FBHandler"; 
    private static final String appKey = "your app key"; 

    private static Facebook facebook = null; 

    private static FBHandler _instance = null; 

    private static Context context = null; 

    private static String[] permissions = null; 


    private FBHandler() 
    { 

    } 
    public static FBHandler getInstance(Context ctx) 
    { 
     if(ctx == null) 
     { 
      Log.d(TAG, "Error: Context is null, hence returning from the FBHandler"); 
      return null; 
     } 

     context = ctx; 
     if(_instance == null) 
     { 
      facebook = new Facebook(appKey); 
      _instance = new FBHandler(); 
      permissions = new String[]{"publish_stream","user_photos", "publish_checkins","email","publish_actions"}; 
     } 

     return _instance; 
    } 


    public void doFbUserLogin(final Activity activity, final fbListner listner) 
    { 
     if(activity == null || listner == null) 
     { 
      Log.d(TAG, "Error: User Login activity/Listner is null"); 
      return; 
     } 

     facebook.authorize(activity, permissions , new DialogListener() 
     { 

      public void onComplete(Bundle values) 
      { 
       printoCommon.showToastMsg(activity, "facebook Login is succeesfull"); 
       listner.onSuccess();     

      } 

      public void onFacebookError(FacebookError e) 
      { 
       printoCommon.showToastMsg(activity, e.getMessage()); 

      } 

      public void onError(DialogError e) 
      { 

       printoCommon.showToastMsg(activity, e.getMessage()); 
      } 

      public void onCancel() 
      { 
       printoCommon.showToastMsg(activity, "Facebook Login is cancelled"); 

      } 

     }); 
    } 

    public void facebookLogout() 
    { 

     AsyncFacebookRunner fbAsyncRun = new AsyncFacebookRunner(facebook); 
     fbAsyncRun.logout(context, new AsyncFacebookRunner.RequestListener() 
     { 

      public void onMalformedURLException(MalformedURLException e, Object state) 
      { 
       printoCommon.showToastMsg((Activity) context, e.getMessage()); 

      } 

      public void onIOException(IOException e, Object state) 
      { 
       printoCommon.showToastMsg((Activity) context, e.getMessage()); 

      } 

      public void onFileNotFoundException(FileNotFoundException e, Object state) 
      { 
       printoCommon.showToastMsg((Activity) context, e.getMessage()); 

      } 

      public void onFacebookError(FacebookError e, Object state) 
      { 
       printoCommon.showToastMsg((Activity) context, e.getMessage()); 

      } 

      public void onComplete(String response, Object state) 
      { 
       printoCommon.showToastMsg((Activity)context, "You have logged out from facebook Successfully"); 
       ((Activity) context).finish(); 
      } 
     }); 
     } 
    } 
2

尝试这样做它为我工作。从Facebook //注销

public static void logoutFromFB(Context context) { 
    Session session = Session.getActiveSession(); 
    if (session != null) { 
     if (!session.isClosed()) { 
      session.closeAndClearTokenInformation(); 
      // clear your preferences if saved 
     } 
    } else { 
     session = new Session(context); 
     Session.setActiveSession(session); 
     session.closeAndClearTokenInformation(); 
     // clear your preferences if saved 
    } 
} 
0

把这个FacebookSdk.sdkInitialize(getApplicationContext());然后在按钮单击事件上写下面的代码:

LoginManager.getInstance()。logOut();

适合我。

把它从https://stackoverflow.com/a/31759037/7577192