Xamarin Firebase RTDB和权限被拒绝401



My db rules -

{
"rules": {
"Users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}

DB -

{
"Users" : {
"aaaaaRfeyDVEjAfhpKEC2Vwxxxxx" : {
"SendEmailId" : "xyz"
},
"bbbbbzOyj6QVZAg4pjaoqjqyyyyy" : {
"SendEmailId" : "abc"
}
}
}
访问数据的c#代码
var dbNodePath = $@"Users/{_service.CurrentUserId()}"; 
System.Diagnostics.Debug.WriteLine(_service.CurrentUserId()); //this confirms the user Uid
FirebaseClient firebase = new FirebaseClient("https://mydb-default-rtdb.asia-southeast1.firebasedatabase.app");

var db = (await firebase.Child("Users").Child("SendEmailId")
.OnceSingleAsync<User>());

得到一个异常RequestUrl设置为- https://mydb-default-rtdb.asia-southeast1.firebasedatabase.app/Users/SendEmailId/.jsonResponseData设置为-

{
"error" : "Permission denied"
}

StatusCode设置为System.Net.HttpStatusCode.Unauthorized

我在谷歌上搜索了这个问题,大多数结果建议将规则更改为

{
"rules": {
"Users": {
"$uid": {
**".write": true,
".read": true**
}
}
}
}

允许任何用户访问数据库。有了这个选项,代码就可以读取DB值。搜索结果建议在开发期间切换到此规则,并在生产期间用实际规则替换它。这使我对

感到困惑
  1. 何时以及如何切换到生产模式
  2. 何时以及如何测试真正的规则

Xamarin solution有2个项目

android使用以下块包-

<PackageReference Include="FirebaseAdmin">
<Version>2.2.0</Version>
</PackageReference>
<PackageReference Include="FirebaseDatabase.net">
<Version>4.0.6</Version>
</PackageReference>
<PackageReference Include="Xamarin.Firebase.Auth">
<Version>121.0.1.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Firebase.Core">
<Version>119.0.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2012" />
<PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
<Version>117.0.0</Version>
</PackageReference>

Xamarin表单使用以下Nugget包-

<PackageReference Include="FirebaseAdmin" Version="2.2.0" />
<PackageReference Include="FirebaseDatabase.net" Version="4.0.6" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2083" />
<PackageReference Include="Xamarin.Essentials" Version="1.7.0" />
任何帮助都是非常感激的。因为我没有足够的声誉来评论相关的stackoverflow问题/问题。

何时以及如何切换到生产模式

当你的产品经过测试没有问题后,你可以在生产中替换为真正的规则。

何时以及如何测试真实规则

在此期间,您可以在发布之前使用特殊用户帐户进行测试。这是APP开发的正常流程。

相关内容

  • 没有找到相关文章

最新更新