Я использую Facebook входа, как описано в разделе "Начало работы" Документ - https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
Facebook SDK 3 - Session Re-журнал в выпуске
// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
TextView welcome = (TextView) findViewById(R.id.welcome);
welcome.setText("Hello " + user.getName() + "!");
}
}
});
}
}
});
при использовании этого кода Facebook распознает пользователя (что loged в в приложении Facebook) и предполагает, что это пользователь, с которым я хочу войти.
скажем, что я хочу оставить решение о том, какую учетную запись Facebook использовать для пользователя. как я могу это сделать?
вещей я пытался до сих пор:
1) выполнить пользователь, авторизуйтесь как это:
SessionTracker sessionTracker = new SessionTracker(activity, new StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
}
}, null, false);
if (sessionTracker.getSession() == null || sessionTracker.getSession().getState().isClosed()) {
sessionTracker.setSession(null);
Session session = new Session.Builder(activity).setApplicationId(activity.getString(R.string.fb_app_id)).build();
Session.setActiveSession(session);
}
final Session currentSession = sessionTracker.getSession();
if (!currentSession.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(activity);
if (openRequest != null) {
openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
openRequest.setPermissions(Arrays.asList("email", "publish_actions"));
openRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
openRequest.setCallback(new StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
Request.executeMeRequestAsync(currentSession, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
authListener.onCompleteAuthorization(user != null, user, currentSession.getAccessToken(), currentSession.getExpirationDate().getTime());
}
});
}
});
currentSession.openForPublish(openRequest);
это работает отлично в первый раз, но второй раз был призван (Скажем, после выхода пользователя из моего приложения и повторного входа в систему с другой учетной записью facebook), он запоминает последнего пользователя, который был зарегистрирован. ! даже после удаления приложения Facebook и моего приложения !!!!
2), призывающую тот же код, прежде чем снова войти в систему:
if (Session.getActiveSession() != null) {
Session.getActiveSession().closeAndClearTokenInformation();
}
он ничего не делает ...
пожалуйста, помогите мне понять, как я могу удалить все предыдущие Facebook История пользователя/закэшированное токенов, чтобы добиться следующего поведения: каждый раз, когда пользователь выполняет вход в Facebook - появится диалоговое окно «Ввести адрес электронной почты + пароль» ...
заранее.
благодарит за ответ. через 10 наших я проверю. Тогда я буду более рад, если не считать вашего ответа. похоже, что это будет трюк :) –