Android Facebook SDK3.0, состояние сеанса ОТКРЫТИЕ
Я пытаюсь использовать Facebook SDK 3.0 для извлечения токена доступа при нажатии кнопки в приложении для Android. У меня есть общая кнопка в моей деятельности, которая выполняет следующие действия:
Button facebook = (Button)findViewById(R.id.facebookLoginButton);
facebook.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Session session = new Session(getApplicationContext());
Session.setActiveSession(session);
session.openForRead(new Session.OpenRequest(SignInActivity.this).setCallback(statusCallback));
}
});
И затем обратный вызов:
private class FacebookSessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
String s=session.getAccessToken();
}
}
Щелчок по кнопке подскажет мне, как мне получить доступ к моему профилю, как ожидалось, но этот обратный вызов только один раз вызывается один раз с SessionState как "ОТКРЫТИЕ". После этого состояние не изменится.
Что мне здесь не хватает? Моя конечная цель состоит в том, чтобы просто получить токен доступа один раз, и мне действительно не нужно останавливать сеанс или использовать его для входа в мое приложение.
Ответы
Ответ 1
Вам нужно переопределить onActivityResult, чтобы после проверки учетных данных в Facebook для Android (или встроенного входа в систему) результаты обрабатываются и сеанс обновляется. Добавьте следующий код:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession()
.onActivityResult(this, requestCode, resultCode, data);
}
Ответ 2
@Лукас Джота: попробуйте изменить код запроса. это работает для меня.
session.openForRead(новый Session.OpenRequest(LoginActivity.this).setCallback(statusCallback).setRequestCode(urRequestCode));
Кроме того, убедитесь, что ваша активность не имеет свойства "один экземпляр".