Facebook SDK 4 для Android - Как выйти из системы программно
недавно Facebook выпустила SDK 4 с новыми и крутыми обновлениями. Я попытался переключиться на SDK4, чтобы использовать новые функции,однако, я борюсь с функцией входа в Facebook.
до сих пор, чтобы выйти из Facebook программно, я использую :
Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();
но SDK4, похоже, больше не поддерживает сеанс, и в официальных документах они упоминают:
есть два способа реализовать Facebook login на Android:
класс LoginButton - Который предоставляет кнопку, которую вы можете добавить в свой пользовательский интерфейс. Он следует за текущим токеном доступа и может входить и выходить из системы.
Ну, кажется, нет никакого способа выйти из Facebook программно, кроме использования LoginButton. Кто-нибудь есть идеи, пожалуйста, поделитесь им здесь.
5 ответов:
можно использовать
LoginManager.getInstance().logOut();
, даже если вы используете LoginButton, потому чтоэтот элемент пользовательского интерфейса обертывает функциональность, доступную в LoginManager.
EDIT: Просто отметить, что это работает для Facebook SDK v4. Я не знаю, изменят ли они его в будущем.
@как batoutofhell упоминание, не забудьте поставить
FacebookSdk.sdkInitialize(getApplicationContext());
для инициализации SDK facebook. Пожалуйста, смотрите здесь за подробностями.
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(); }
можно использовать
LoginManager.logOut()
проверить https://developers.facebook.com/docs/reference/android/current/class/LoginManager/
чтобы обработать его с помощью 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(); } }); }
вы можете выйти из системы с помощью 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();
С помощью общих настроек здесь вы можете выйти полностью, и в следующий раз вы можете войти с другой учетной записью.