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();
}
});