2015-11-17 11 views
5



Tworzę aplikację i pomyślnie rozwiązałem logowanie z Facebooka za pomocą Facebooka SDK 4.7.0. Używam LoginManager (nie LoginButton), ponieważ chcę mieć niestandardowy przycisk do tego.
Przepływ jest tak:
Nie można się wylogować z innej aktywności (Facebook - Android)

  • Otwórz aplikację i witany przez główną działalność
  • Kliknij przycisk Start, a następnie otwiera SignInActivity gdzie kliknij Zaloguj się z Facebooka Buttona, logów i zamyka tę aktywność
  • Następnie jesteś ponownie na ekranie MainActivity
  • W suwaku szuflady nawigacji mam przycisk LOGOUT na dole, zainicjowałem go i wyświetlam go tylko wtedy, gdy jesteś zalogowany, tj. Gdy user_id twojego profilu na Facebooku nie jest null.

I wdrożone następujące operacje na onClickListener Wyloguj Przycisk:

FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); LoginManager.getInstance().logOut();

Ale kiedy nacisnąć przycisk na urządzeniu nie robi nic (tylko pokazuje ViewPostImeInputStage ACTION_DOWN w LogCat, który jest standardem przez naciśnięcie przycisku.

widziałem innych stanowisk na SO, w którym ta metoda zadziałała, więc nie rozumiem, dlaczego to nie działa w moim przypadku.

SignInActivity.java

FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); 

    callbackManager = CallbackManager.Factory.create(); 

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      Log.e(TAG, "User ID: " + loginResult.getAccessToken().getUserId()); 
      Log.e(TAG, "Auth Token: " + loginResult.getAccessToken().getToken()); 
      SharedPreferences prefs = getSharedPreferences("com.dotfreeride.dotfreeride.login", 0); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putString("userId", loginResult.getAccessToken().getUserId()); 
      editor.putString("fbToken", loginResult.getAccessToken().getToken()); 
      editor.commit(); 
     } 

     @Override 
     public void onCancel() { 
      Toast.makeText(SignInActivity.this, "Login attempt canceled!", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onError(FacebookException error) { 
      Toast.makeText(SignInActivity.this, "Login attempt failed!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

MainActivity.java

logoutBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); 
       LoginManager.getInstance().logOut(); 
      } 
     }); 

Odpowiedz

1

ten pracował dla mnie

public class Profile extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_profile); 


} 

public void gotoLogin(View view){ 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    LoginManager.getInstance().logOut(); 
    Intent intent = new Intent(this, Login.class); 
    startActivity(intent); 
} 

}

miałem ten sam problem, bo oporny na AppCompatActivity. W ActionBar to działa. Mam nadzieję, że zrobi to za Ciebie :)

Powiązane problemy