使用实时数据库的 Firebase 身份验证不适用于 C#

问题描述 投票:0回答:1

我正在使用 .NET Windows Forms Framework 编写 C# 应用程序,当我尝试将信息发送到实时数据库时,出现权限被拒绝的错误,但我已登录该应用程序。我的 Firebase 实时数据库的安全性如下:

{
  "rules":{
    ".read": "auth.uid != null",
    ".write": "auth.uid != null"
  }
}

我使用来自 Step Up Labs 的 FirebaseAuthentication.net (v3.7.1) 和 FirebaseDatabase.net (v4.2.0)

using Firebase.Database;
using Firebase.Database.Query;
using Firebase.Auth;

发生权限被拒绝错误的代码如下

private async void button_reg_Click(object sender, EventArgs e)
{
    authProvider = new FirebaseAuthProvider(new FirebaseConfig("my_api_key"));


    var authResult = await authProvider.SignInWithEmailAndPasswordAsync("a mail that exists on firebase auth", "the correct password");


    if (authResult != null)
    {
        var user = new Users()
        {
            Address = "Country",
            LastName = "Doe",
            Name = "John"
        };

        var client = getFirebaseClient();

        await client.Child(nameof(Users))
            .PostAsync(user);
    }    
}

private FirebaseClient getFirebaseClient()
{
    return new FirebaseClient("my_database_url");
}

类用户是

 public class Users
 {
     public string Name { get; set; }
     public string LastName { get; set; }
     public string Key { get; set; }
     public string Address { get; set; }
 }

代码通过了

authResult!=null
,但是在这一行
await client.Child(nameof(Users)).PostAsync(user);
中出现了以下错误

Firebase.Database.FirebaseException: 'Exception occured while processing the request.
Url: https://project-projectNumber-default-rtdb.firebaseio.com/Users/-NwVBBRKfhiWk5R1ISC5/.json?print=silent
Request Data: {"Name":"John","LastName":"Doe","Key":null,"Address":"Country"}
Response: {
  "error" : "Permission denied"
}
'

不明白问题出在哪里,希望有人能解答

c# .net firebase-realtime-database firebase-authentication firebase-security
1个回答
0
投票

通过阅读有关验证 StepUp Labs 数据库客户端的文档,您必须显式地将身份验证信息传递给

FirebaseClient

当您登录用户时,您似乎没有将身份验证信息传递到任何地方的

FirebaseClient

© www.soinside.com 2019 - 2024. All rights reserved.