Facebook SDK 4 для Android - как выйти из программы
Недавно Facebook выпустил SDK 4 с новыми и прохладными обновлениями. Я попытался переключиться на SDK4, чтобы использовать новые функции, однако я борюсь с функцией входа в Facebook.
До тех пор, чтобы программно выйти из программы Facebook, я использовал:
Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();
Но SDK4, похоже, больше не поддерживает сессию, и в официальных документах они упоминают:
Существует два способа внедрения Facebook-входа на Android:
Класс LoginButton - который предоставляет кнопку, которую вы можете добавить в свой интерфейс. Он следует за текущим токеном доступа и может регистрировать людей в и из них.
Ну, похоже, нет возможности выйти из программы Facebook, кроме использования LoginButton.
У кого-нибудь есть идея, пожалуйста, поделитесь им здесь.
Ответы
Ответ 1
Вы можете использовать LoginManager.getInstance().logOut();
, даже если вы используете LoginButton, потому что
Этот элемент пользовательского интерфейса обертывает функциональность, доступную в LoginManager.
EDIT:
Просто упомянем, что это работает для Facebook SDK v4. Я не знаю, изменят ли они это в будущем.
@в описании batoutofhell, не забудьте поставить FacebookSdk.sdkInitialize(getApplicationContext());
для инициализации facebook sdk. Подробнее см. здесь.
Ответ 2
SDK4, если вы хотите полностью де-пара, убедитесь, что вы также удалили приложение из учетной записи пользователя facebook. Этот метод полностью отключает пользователя:
public void disconnectFromFacebook() {
if (AccessToken.getCurrentAccessToken() == null) {
return; // already logged out
}
new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
.Callback() {
@Override
public void onCompleted(GraphResponse graphResponse) {
LoginManager.getInstance().logOut();
}
}).executeAsync();
}
Ответ 3
Вы можете использовать LoginManager.logOut()
Отъезд https://developers.facebook.com/docs/reference/android/current/class/LoginManager/
Ответ 4
Чтобы обработать его с помощью loginButton:
//Check if user is currently logged in
if (AccessToken.getCurrentAccessToken() != null && com.facebook.Profile.getCurrentProfile() != null){
//Logged in so show the login button
fbLogin.setVisibility(View.VISIBLE);
fbLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//log out
LoginManager.getInstance().logOut();
gotoLogin();
}
});
}
Ответ 5
U может выйти из системы с помощью LoginManager, но вам также нужно использовать запрос графа. Я говорю о выходе из системы полностью, поэтому в следующий раз вы можете войти в систему с другой учетной записью.
new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
.Callback() {
@Override
public void onCompleted(GraphResponse graphResponse) {
SharedPreferences pref = DashBoard.this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear();
editor.commit();
LoginManager.getInstance().logOut();
Intent logoutint = new Intent(DashBoard.this,MainActivity.class);
logoutint.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(logoutint);
}
}).executeAsync();
С помощью общих настроек здесь вы можете полностью выйти из системы. И в следующий раз вы можете выйти из другой учетной записи.