2015-12-08 4 views
3


Я разрабатывает игру для Android, который имеет Facebook логин и я столкнулся следующее странное поведение при попытке выхода из системы:
если пользователь нажмет кнопку выхода из системы Facebook, закрывающих приложение, а затем снова открывается, пользователь все еще регистрируется (= токен доступа все еще действителен). В качестве теста я проверил токен доступа после выхода из системы, и он является нулевым, как и должно быть, но если я закрою и снова открою приложение, то токен доступа снова не будет нулевым.
Кажется, что Facebook кэширует токен доступа и берет его из кеша даже после выхода из системы.

Я пробовал использовать собственную кнопку Facebook, а также LoginManager.getInstance.logout(); Я инициализировал sdk Facebook в верхней части onCreate, прежде чем setContent(), и я выполнил процедуру в документах на Facebook, но тот же результат.

Я использую Facebook sdk 4.6.0, и я столкнулся с этой проблемой на Android 4.2.2 и 4.4.2.

EDIT

Вот код:

- кнопка Facebook:

Facebook выход из системы не работает Android [Facebook SDK 4]

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    setContentView(R.layout.activity_settings); 
    btnFacebookLogout.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

     } 

     @Override 
     public void onCancel() { 
     } 

     @Override 
     public void onError(FacebookException e) { 

     } 
    }); 
} 



- нормальная кнопка:

btnNormalLogout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LoginManager.getInstance().logOut(); 
     } 
    }); 

Любой sugg estion?

Заранее спасибо

+0

Включите ваш код, чтобы мы могли помочь? – Shawn

+0

Да, извините. Я добавил код в редактирование. Спасибо –

+0

Кто-нибудь может помочь? –

ответ

2

Ну, I` боролись этой чертову SDK около часа и обнаружил простой обходной путь для этого выхода из системы выпуска.

Просто попробуйте сделать следующее:. LoginManager.getInstance() setLoginBehavior (LoginBehavior.WEB_ONLY)

. Плюсы: LoginManager.getInstance() Выход() работает отлично в этом случае.

Против: аутентификация всегда будет отображаться в диалоговом окне веб-просмотра.

+0

Работал для меня !! –

+0

благодарю вас за предложение, но в моем случае я использую этот 'LoginManager.getInstance(). SetLoginBehavior (LoginBehavior.WEB_VIEW_ONLY);' – vuhung3990

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