Firebase REST API-使用ID令牌对请求进行身份验证不起作用

时间:2019-06-16 13:48:51

标签: c# firebase firebase-realtime-database firebase-authentication

我正在研究Unity C#项目,并尝试在用户登录后使用id令牌Firebase返回对Realtime Database的请求进行身份验证,但它表示请求未经授权。这是我的登录代码(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
}

这是完整的读取请求网址:https://<PROJECT_ID>.firebaseio.com/testing/flatString.json?auth=<ID_TOKEN>

1 个答案:

答案 0 :(得分:0)

使用Firebase Unity SDK代替自己的httppost

在使用Firebase身份验证之前,您需要:

注册您的Unity项目并将其配置为使用Firebase。

如果您的Unity项目已经使用Firebase,那么它已经为Firebase注册并配置了。

如果您没有Unity项目,则可以下载示例应用。

将Firebase Unity SDK(特别是FirebaseAuth.unitypackage)添加到Unity项目中。