0

Я хочу повторно войти в систему пользователя Facebook в режиме синтаксиса без отображения диалогового окна входа в систему Facebook с использованием сохраненного TOKEN в Parse.Повторное использование сеанса входа в facebook после повторного открытия приложения

Я использую 3 метода для сохранения и восстановления сеанса, но как использовать их в объекте Facebook ParseFacebookUtils?

/* 
* Save the access token and expiry date so you don't have to fetch it each 
* time 
*/ 
public static boolean save(Facebook session, Context context) { 
    Editor editor = context.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit(); 
    editor.putString(TOKEN, session.getAccessToken()); 
    editor.putLong(EXPIRES, session.getAccessExpires()); 
    editor.putLong(LAST_UPDATE, session.getLastAccessUpdate()); 
    return editor.commit(); 
} 

/* 
* Restore the access token and the expiry date from the shared preferences. 
*/ 
public static boolean restore(Facebook session, Context context) { 
    SharedPreferences savedSession = context.getSharedPreferences(KEY, Context.MODE_PRIVATE); 
    session.setTokenFromCache(
      savedSession.getString(TOKEN, null), 
      savedSession.getLong(EXPIRES, 0), 
      savedSession.getLong(LAST_UPDATE, 0)); 
    return session.isSessionValid(); 
} 

public static void clear(Context context) { 
    Editor editor = context.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit(); 
    editor.clear(); 
    editor.commit(); 
} 

И я восстановить сессию нижеследующее перед login-

ParseFacebookUtils.initialize(APP_ID); 
    // restore session 
    restore(ParseFacebookUtils.getFacebook(), this); 
    // login using restored data 
    ParseFacebookUtils.logIn(permissions, LoginActivity.this, 
      new LogInCallback() { 
       @SuppressWarnings("deprecation") 
       @Override 
       public void done(ParseUser user, ParseException e) { 

       // work after login 

         ParseUser.enableAutomaticUser(); 
         save(ParseFacebookUtils.getFacebook(),this); 
       }}); 

Но это не работает, это всегда открывает диалоговое окно входа в систему Facebook.

ответ

0

Я решил его, вызвав метод openActiveSession с allowLoginUI = false в методе onCreate() моей активности. Мой код is

ParseFacebookUtils.getSession().openActiveSession(this, false, new Session.StatusCallback() { 

@Override 
public void call(Session session, SessionState state, Exception exception) 
{ 
    if (session.isOpened()) { 

     ParseFacebookUtils.logIn(LoginActivity.this, 
         new LogInCallback() { 

          @Override 
          public void done(ParseUser user, ParseException e) { 
          // user logged in 
          } 

        }); 
       } 
       else 
       { 
       // error found 
       } 
      } 
     }); 
Смежные вопросы