2015-03-18 2 views
3

Я использую электронную почту и пароль. Я создал пользователя и аутентифицировал пользователя, но я не знаю, как добавить сеанс для этого пользователя.Создать сеанс с Android Java Firebase

Например, если пользователь входит в свою учетную запись. Он/она может удалить процесс приложения на своем телефоне, когда он не хочет использовать приложение, а затем избавиться от процесса приложения, и сеанс все равно будет продолжаться, поэтому, когда они вернутся к своему приложению, они все равно должны войти в систему, пока он/она не выйдет из системы (unauth).

У меня возникли проблемы с выполнением сеанса для зарегистрированного пользователя. Я считаю, что нужно использовать токен, но я понятия не имею, как его использовать.

Войти Активность:

Firebase user_data = new Firebase("https://myapp.firebaseio.com"); 
user_data.authWithPassword(login_email.getText().toString(), login_pwd.getText().toString(), new Firebase.AuthResultHandler() { 
@Override 
public void onAuthenticated(AuthData authData) { 
    System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider()); 
    Toast.makeText(getBaseContext(), "Login success!", Toast.LENGTH_LONG).show(); 
    Intent toMainActivity = new Intent(getApplicationContext(), MainActivity.class); 
    startActivity(toMainActivity); 
    } 
      @Override 
public void onAuthenticationError(FirebaseError firebaseError) { 
       // there was an error 
    System.out.println("ERROR........................................."); 
    } 
}); 

Heres простой scenerio: пользователь входит в систему (От Вход класса является Намерение основной класс активности) Пользователь не выйти, но процесс удаления приложения.. Позже Пользователь решает использовать приложение.

Моя проблема: при нажатии на приложение оно возвращает пользователя на страницу входа в систему, тогда как пользователь должен перейти на главную страницу активности.

Обновлено - Initialization

меня инициализировать это еще не экономить вошедшего в состоянии.

Моя проблема: при нажатии на приложение оно возвращает пользователя на страницу входа в систему, тогда как пользователь должен перейти на главную страницу активности.

Вот Главная активность:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Firebase.setAndroidContext(this); 

    setContentView(R.layout.activity_main); 
    Firebase user_data = new Firebase("https://myapp.firebaseio.com"); 
    user_data.addAuthStateListener(new Firebase.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(AuthData authData) { 
      if (authData != null) { 
       System.out.println("Authentication is currently working"); //this did print 
      } else { 
       System.out.println("Failed authentication"); 
      } 
     } 
    }); 

    AuthData authData = user_data.getAuth(); 
    if (authData != null) { 
     System.out.println("The state is: " + authData); //this did print 
    } else { 
     System.out.println("Failed"); 
    } 

проверить аутентификацию, и они, кажется, хорошо, но когда я удалить процесс после входа в систему на главной деятельности он отскакивает назад на страницу входа когда это Я перезагружаю приложение.

Результаты для мониторинга данных AUTH выше:

рабочего AUTH

аутентификации в настоящее время работает

состояние

состояние является: AuthData {UID = 'simplelogin: 3', provider = 'password', токен = '***', expires = '1426758087', auth = '{prov эр = пароль, UID = simplelogin: 3} ', providerData='{[email protected], isTemporaryPassword = ложь}}

Аутентификация в настоящее время работает

решаемые

Просто добавьте намерение, если в настоящее время выполняется проверка подлинности, и он должен вернуться в основное действие, когда приложение сначала загружается на ваш телефон при первом вызове, который вы вызывали.

Вот страница Войти Активность:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Firebase.setAndroidContext(this); 

    setContentView(R.layout.activity_main); 
    Firebase user_data = new Firebase("https://myapp.firebaseio.com"); 
    user_data.addAuthStateListener(new Firebase.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(AuthData authData) { 
      if (authData != null) { 
       System.out.println("Authentication is currently working"); //this did print 
       Intent toMainActivity = new Intent(getBaseContext(), MainActivity.class); 
       startActivity(toMainActivity); 
      } else { 
       System.out.println("Failed authentication"); 
      } 
     } 
    }); 

    AuthData authData = user_data.getAuth(); 
    if (authData != null) { 
     System.out.println("The state is: " + authData); //this did print 
    } else { 
     System.out.println("Failed"); 
    } 
+0

Вы можете добавить свой отзыв? Не совсем понятно, что вы спрашиваете. –

+0

, поэтому я хочу создать сеанс для зарегистрированного пользователя. Так, например. Допустим, я вошел в систему с помощью своего телефона Android и не хочу использовать это приложение, поэтому я нажимаю кнопку «Домой» и удаляет процесс приложения. Позже я решил использовать это приложение, поэтому, когда я открываю приложение, он все равно должен быть зарегистрирован, но не из моего приведенного выше кода. – nothingness

+0

bump ........... – nothingness

ответ

4

Для того, чтобы сессий аутентификационных сохраняться при перезапуске приложения, вам необходимо инициализировать клиентскую библиотеку Firebase Android с вами Android контекст:

С https://www.firebase.com/docs/android/guide/setup.html:

Библиотека Firebase должна быть инициализирована один раз с использованием контекста Android. Это должно произойти до создания или использования ссылки на Firebase. Вы можете добавить код установки Firebase в приложение Android Application или Activity onCreate.

@Override 
public void onCreate() { 
    super.onCreate(); 
    Firebase.setAndroidContext(this); 
    // other setup code 
} 

Клиент Firebase будет автоматически проходить проверку подлинности на последующее применение холодного пуска. Чтобы проверить состояние аутентификации, см. Firebase Android: Monitoring Authentication.

+0

thx для вашего ответа, у меня все еще такая же проблема. Я обновил ответ и добавлю в основной класс активности. В моем классе Login я инициализирую 'Firebase.setAndroidContext (this);' также. – nothingness

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