Firebase REST API - аутентификация запроса с помощью токена id не работает - PullRequest
0 голосов
/ 16 июня 2019

Я работаю над проектом Unity C # и пытаюсь аутентифицировать запрос к базе данных реального времени, используя маркер идентификатора, который Firebase возвращает после входа пользователя, но он говорит, что запрос не авторизован. Вот мой код входа в систему (AuthResponse переносит тело ответа):

WWWForm form = new WWWForm();
form.AddField("email", email);
form.AddField("password", password);

using (UnityWebRequest www = UnityWebRequest.Post("https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=" + API_KEY, form))
{
    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log($"Login failed: {www.error}");
        callback(false);
    }
    else
    {
        AuthResponse data = www.downloadHandler.text.FromJson<AuthResponse>();
        ID_TOKEN = data.idToken;
    }
}

И мой запрос на чтение:

string url = $"{DATABASE_URL}{path}.json";
if (auth) url += $"?auth={ID_TOKEN}";
using (UnityWebRequest www = UnityWebRequest.Get(url))
{
    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log($"Read failed: {www.error}");
    }
}

В моей базе данных есть общедоступные правила, и все работает без параметра auth. Чего мне не хватает?

Редактировать: Это ответ токена:

{
  "kind": "identitytoolkit#SignInWithPasswordResponse",
  "localId": <LOCAL_ID>,
  "email": <EMAIL>,
  "displayName": "",
  "idToken": <ID_TOKEN>,
  "registered": true
}

Это полный URL-адрес запроса на чтение: https://<PROJECT_ID>.firebaseio.com/testing/flatString.json?auth=<ID_TOKEN>

1 Ответ

0 голосов
/ 24 июня 2019

вместо использования собственного httppost используйте Firebase Unity SDK

Прежде чем вы сможете использовать Firebase Authentication, вам необходимо:

Зарегистрировать ваш проект Unity и настроить его для использования Firebase.

Если ваш проект Unity уже использует Firebase, то он уже зарегистрирован и настроен для Firebase.

Если у вас нет проекта Unity, вы можете загрузить образец приложения.

ДобавитьFirebase Unity SDK (в частности, FirebaseAuth.unitypackage) для вашего проекта Unity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...