Как правило, вы не должны этого делать. Путь к вашей базе данных в реальном времени будет опубликован всем, кто скачивает вашу игру. Несмотря на то, что вы можете использовать правила для его защиты, обычно для этого используется идентификатор пользователя из Firebase Authentication, поскольку он будет безопасно передаваться при любой операции с базой данных из стандартного SDK.
* 1004 С учетом вышесказанного я могу рассказать вам, как бы я выполнил sh того, что вы хотите, с помощью официального Firebase SDK, а затем дать подсказки, которые могут помочь вам со сторонним клиентом, основанным на отдыхе (я сам не использовал FirebaseREST).
Для Firebase Unity SDK я бы использовал Аутентификация Firebase для всего этого потока. Я в основном слежу за этим .
Прежде чем что-то делать, вам нужно позвонить FirebaseApp.CheckAndFixDependenciesAsync()
. Я бы использовал продолжение, чтобы убедиться в этом. Вы должны делать это только один раз за запуск игры, но повторный вызов не повредит вам больше, чем кратковременные скачки производительности, которые он может вызвать:
async InitFirebase() {
var result = await FirebaseApp.CheckAndFixDependenciesAsync();
if (result == DependencyStatus.Available) {
// do Firebase stuff here
}
}
Вход в систему так же прост:
var auth = FirebaseAuth.DefaultInstance;
var credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
var user = await auth.SignInWithCredentialAsync(credential);
Если вы хотите, чтобы пользователь Firebase появился на новой сцене или даже на новом запуске игры, вы можете позвонить:
var user = FirebaseAuth.DefaultInstance.CurrentUser;
Если это значение равно NULL, вы должны войти в систему. снова.
То, что происходит внутри, заключается в том, что вы передаете учетные данные пользователя в Firebase Authentication SDK. Вы можете создать или войти в систему пользователя в своем проекте Firebase и получить обратно токен Firebase id и токен Firebase refre sh (вы можете получить представление об этом процессе здесь и here ).
Идентификационный токен недолговечен (~ 1 час), но refre sh действителен, пока не произойдет какое-либо событие (например, пользователь удален или отключен). Вы можете сохранить этот токен в Unity PlayerPrefs (хотя вы можете быть осторожны с ним) и попытаться обновить sh токен при следующем запуске игры. Это будет намного безопаснее, чем простое чтение значения из базы данных перед аутентификацией пользователя.
Если вы хотите сохранить маркер идентификатора между сценами, вы также можете попытаться сохранить его в PlayerPrefs. Я бы предпочел ScriptableObject со свойством publi c, в котором вы можете его кешировать для текущего запуска вашей игры, но это зависит от ваших собственных предпочтений относительно сохранения данных между сценами (синглтон MonoBehaviour, помеченный * 1039) * DontDestoryOnLoad будет работать так же хорошо, например).
Я бы порекомендовал использовать официальный Unity Auth SDK , если вы можете. Это один из продуктов Firebase, который работает на настольных и мобильных устройствах.