2015-10-08 3 views
5

Я внедрил кнопку входа в систему Facebook, как описано в https://developers.facebook.com/docs/facebook-login/android руководство разработчика с разрешениями на чтение профиля и электронной почты.Android Facebook SDK 4.5.0 Ошибка входа в систему Неверная ошибка хеша ключа при попытке снова войти в систему

Когда я нажимаю кнопку входа в систему, открывается приложение Facebook, после чего я могу войти в систему и получить данные пользователя из Facebook. После этого момента кнопка Facebook автоматически переключается на кнопку «Выход». И когда он нажат, он выходит из системы. Пока это работает хорошо.

Как только выйдет из аккаунта Facebook в моей стороне приложения и вы хотите повторно войти в систему с помощью кнопки Facebook, Facebook выйдет из строя с ошибкой ключа. Если я перейду к настройкам учетной записи в приложении Facebook и удалю свое приложение из списка, то повторный вход возвращает успех.

Я также попробовал решение здесь Android Facebook app logout issue, но он тоже не работал. Для очистки, я использую этот код (найденный общий прив имя в классе AccessTokenCache):

SharedPreferences fbSharedPreferences = this.getSharedPreferences("com.facebook.AccessTokenManager.SharedPreferences", 0); 
    if (fbSharedPreferences != null) { 
     fbSharedPreferences.edit().clear().commit(); 
    } 

Я использую Facebook SDK 4.5. Я тестирую реальную учетную запись Facebook. Мои ключи и хэши приложений установлены в настройках приложения Facebook.

P.S. Название вопроса зависит от Facebook Login-Logout Issue Invalid Key Hash Error, While Trying to Login Again (у которого нет решения).

ответ

2

У меня была такая же проблема, вам нужно удалить приложение из приложения 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(); 
} 
+0

Да, это работает, когда я удаляю приложение вручную из настроек учетной записи Facebook. – enver

+0

Точно, приведенный выше код удалит приложение из списка приложений facebook. –

+0

Это работает в этом смысле. Но один из недостатков заключается в том, что он делает токен доступа недействительным и больше не используется. – enver

Смежные вопросы