2014-01-30 2 views
0

나는 프로젝트를 진행 중입니다. 첫 번째 활동에서 나는 페이스 북으로 로그인하고 로깅 후에 새로운 활동을 시작합니다. 나는 페이스 북에서 로그 아웃하고 싶다. 두 번째 활동에서 페이스 북에서 로그 아웃하는 방법. 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

이 나를 위해 일한이 일을보십시오. //

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