2016-12-06 9 views
0

Я использую новый пакет единственного (бета-версии) базового балласта для онлайн-данных в своей игре. Всякий раз, когда я убиваю приложение в iOS, мне нужно снова ввести мои учетные данные. Я не хочу сохранять электронную почту и пароль в PlayerPrefs, поскольку это кажется совершенно неуверенным. Есть (уже) способ сохранить состояние входа, так что пользователь должен только войти в систему после загрузки приложения и никогда больше после этого?Помните аутентификацию в Firebase Unity Games

Спасибо за любую помощь, Alex

ответ

0

Я думаю, что вы ищете является System.Serializeable и бинарный форматировщик. Это не самая безопасная вещь в мире, но она намного лучше, чем playerprefs.

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

public class CredentialsSaveLoader 
{ 
    [System.Serializeable] 
    public class Credentials 
    { 
     public string username; 
     public string password; 

    } 
    public void Save (string path) 
    { 
     BinaryFormatter binaryFormatter = new BinaryFormatter(); 
     FileStream file = File.Create(Application.persistentDataPath + path); 
     Credentials saveData = new Credentials(); 

     saveData.username = [username var]; 
     saveData.password = [password var]; 

     binaryFormatter.Serialize(file,saveData); 
     file.Close(); 
    } 
    public IEnumerator Load (string path) 
    { 
     if(File.Exists(Application.persistentDataPath + path)) 
     { 
      BinaryFormatter binaryFormatter = new BinaryFormatter(); 
      FileStream file = File.Open(Application.persistentDataPath + path, FileMode.Open); 

      Credentials saveData = binaryFormatter.Deserialize(file) as SaveData; 

      //get all info 
      [username var] = saveData.username; 
      [password var] = saveData.password; 
      file.Close(); 
     } 
    } 
} 
+0

Спасибо, я думаю, что это может быть обходным путем во время бета-тестирования, но я бы предпочел решение, которое не требует учетных данных пользователей для входа в систему, но, скорее, остается в системе/использует какой-то постоянный токен аутентификации. – Alexander

0

Нет встроенного способа сохранения сеанса пользователя, если приложение завершено. Для этого вы можете создавать токены пользователей Firebase. Однако вы не можете создавать эти жетоны через SDK Unity. Вам нужно будет запустить SDK администратора (https://firebase.google.com/docs/auth/admin/create-custom-tokens), сгенерировать их с помощью этого и отправить их клиенту. Функция TokenAsync в SDK генерирует только токен идентификатора. Не токен доступа.

Я реализовал решение, основанное на этом несколько дней назад, только для того, чтобы узнать, что пользовательские токены, созданные в SDK администратора, имеют срок действия, ограниченный 3600 секундами (1 час). Который довольно короткий, и в конечном итоге это не помогло мне автоматически войти в систему, если они пострадали от сбоя или просто прекратили приложение.

Вместо этого вы можете использовать токены Facebook/Google, которые сохраняются немного дольше. Facebook Unity-sdk довольно прост в использовании, и вы можете получить токен доступа прямо от него, который вы можете использовать для аутентификации через Firebase Unity-sdk. Я еще не пробовал решение для входа в Google, поэтому я не могу прокомментировать это.

EDIT: Пожалуйста, не храните электронную почту/пароль локально. Это не путь.

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