2013-08-26 6 views
1

페이스 북 통합 응용 프로그램을 만들었습니다. 로그인 및 로그 아웃을 문제없이 올바르게 할 수 있으며, 로그인 한 다음 응용 프로그램을 닫은 후 다시 열면 올바르게 로그 아웃 할 수 있습니다. 하지만 내 문제는 내가 로그인 한 다음 Eclipse에서 로그 아웃 할 수없는 응용 프로그램을 실행할 때입니다. 오류를 보여줍니다.페이 스북 세션에서 로그 아웃 할 수 없습니다.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      facebook = new Facebook(APP_ID); 
      mAsyncRunner = new AsyncFacebookRunner(facebook); 

     sharePref = getPreferences(MODE_PRIVATE); 
     facebook.setAccessToken(sharePref.getString(ACCESS_TOKEN, null)); 
     facebook.setAccessExpires(sharePref.getLong(EXPIRE_SESSION, 0)); 

    buttonLogin.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       loginToFacebook(); 
      } 
     }); 

buttonLogout.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       logoutFacebook(); 
      } 
     }); 
} 

public void loginToFacebook() { 


     if (!facebook.isSessionValid()) { 
      facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, 
        new DialogListener() { 
         @Override 
         public void onFacebookError(FacebookError e) { 
         } 

         @Override 
         public void onError(DialogError e) { 
         } 

         @Override 
         public void onComplete(Bundle values) { 
          SharedPreferences.Editor editor = sharePref.edit(); 
          editor.putString(ACCESS_TOKEN, 
            facebook.getAccessToken()); 
          editor.putLong(EXPIRE_SESSION, 
            facebook.getAccessExpires()); 
          editor.commit(); 
         } 

         @Override 
         public void onCancel() { 
         } 
        }); 
     } else { 
      Toast.makeText(getApplicationContext(), "You Already Login", 
        Toast.LENGTH_SHORT).show(); 
     } 
    } 
protected void logoutFacebook() { 
     if (facebook.isSessionValid()) { 
      mAsyncRunner.logout(this, 
        new RequestListener() { 
         @Override 
         public void onComplete(String response, Object state) { 
          Log.d("Logout from Facebook", response); 
          if (Boolean.parseBoolean(response) == true) { 
           Log.e("Logout from Facebook", "Great"); 
          } 
         } 

         @Override 
         public void onIOException(IOException e, Object state) { 

         } 

         @Override 
         public void onFileNotFoundException(
           FileNotFoundException e, Object state) { 
         } 

         @Override 
         public void onMalformedURLException(
           MalformedURLException e, Object state) { 
         } 

         @Override 
         public void onFacebookError(FacebookError e, 
           Object state) { 
         } 
        }); 
     } else { 
      Toast.makeText(getApplicationContext(), "Login First", 
        Toast.LENGTH_SHORT).show(); 
     } 
    } 

나는이 유형의 오류 가지고 :

E/AndroidRuntime(6331): FATAL EXCEPTION: Thread-264 
E/AndroidRuntime(6331): java.lang.IllegalArgumentException: Invalid context argument 
E/AndroidRuntime(6331): at android.webkit.CookieSyncManager.createInstance(CookieSyncManager.java:86) 
E/AndroidRuntime(6331): at com.facebook.internal.Utility.clearCookiesForDomain(Utility.java:261) 
E/AndroidRuntime(6331): at com.facebook.internal.Utility.clearFacebookCookies(Utility.java:285) 
E/AndroidRuntime(6331): at com.facebook.Session.closeAndClearTokenInformation(Session.java:593) 
E/AndroidRuntime(6331): at com.facebook.android.Facebook.logoutImpl(Facebook.java:698) 
E/AndroidRuntime(6331): at com.facebook.android.AsyncFacebookRunner$1.run(AsyncFacebookRunner.java:89) 
W/ActivityManager(1202): Force finishing activity com.facebook.androidhive/.AndroidFacebookConnectActivity 
W/WindowManager(1202): Failure taking screenshot for (246x437) to layer 21020 
W/Trace (6331): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6331): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
E/SurfaceFlinger( 786): ro.sf.lcd_density must be defined as a build property 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6331): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (6239): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
W/Trace (1202): Unexpected value from nativeGetEnabledTags: 0 
+0

이 API는 날짜가 표시됩니다. 페이스 북이 페이스 북 버전을 지원하지 못했습니다 <3.0 github에 가서 새로운 API 페이스 북 3.0으로 시작하십시오. –

+0

@BirajZalavadia 자습서를 제공하십시오 – Satheesh

+0

여기에서 전체 단계를 수행하십시오 http://developers.facebook.com/docs/android/getting-started/facebook- sdk-for-android/ –

답변

0

이 시도 ..

mainactivity에서 선 아래로 삭제 ..

sharePref = getPreferences(MODE_PRIVATE); 
     facebook.setAccessToken(sharePref.getString(ACCESS_TOKEN, null)); 
     facebook.setAccessExpires(sharePref.getLong(EXPIRE_SESSION, 0)); 

을 그리고에 내부 선 아래에 추가하려면 로그인 기능

mPrefs = getPreferences(MODE_PRIVATE); 
      String access_token = mPrefs.getString("access_token", null); 
      long expires = mPrefs.getLong("access_expires", 0); 

      if (access_token != null) { 
       facebook.setAccessToken(access_token); 
Toast.makeText(getApplicationContext(), "You Already Login", 
        Toast.LENGTH_SHORT).show(); 
      } 

      if (expires != 0) { 
       facebook.setAccessExpires(expires); 
Toast.makeText(getApplicationContext(), "You Already Login", 
        Toast.LENGTH_SHORT).show(); 
      } 
+0

내 응용 프로그램에서 죄송합니다. 코드를 올바르게 추가하고 있었지만 복사 및 붙여 넣기의 코드를 변경했습니다. 내 응용 프로그램에서 문제가 없습니다. – Satheesh

+0

내 시도를 편집했습니다. – Hariharan

+0

하지만 필요합니다. 로그인 할 때마다 ... 나는 내가 로그인 한 후에 만 ​​세션이 로그 아웃 될 때까지 기다린다. 그렇지 않으면 토스트 메시지 "당신은 이미 로그인했다." – Satheesh

관련 문제