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值。搜索结果建议在开发期间切换到此规则,并在生产期间用实际规则替换它。这使我对
感到困惑- 何时以及如何切换到生产模式
- 何时以及如何测试真正的规则
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开发的正常流程。