C# Android Firebase-将经过身份验证的用户添加到数据库中
好的,我正在Visual Studio中构建xamarin.android应用程序,有很多这类问题,但是我真的没有找到关于xamarin.android的任何东西,所有东西都是基于Java的。我试着遵循这些教程和答案,但总是有一些东西缺失或无法在Xamarin android上工作 我已经做了身份验证,它工作得很好,没有问题。我尝试将用户信息(用户在注册时输入的信息)存储到数据库中。这有点奏效,但有一个问题。以下是代码:C# Android Firebase-将经过身份验证的用户添加到数据库中,c#,firebase,firebase-realtime-database,xamarin.android,C#,Firebase,Firebase Realtime Database,Xamarin.android,好的,我正在Visual Studio中构建xamarin.android应用程序,有很多这类问题,但是我真的没有找到关于xamarin.android的任何东西,所有东西都是基于Java的。我试着遵循这些教程和答案,但总是有一些东西缺失或无法在Xamarin android上工作 我已经做了身份验证,它工作得很好,没有问题。我尝试将用户信息(用户在注册时输入的信息)存储到数据库中。这有点奏效,但有一个问题。以下是代码: public void OnComplete(Task task)
public void OnComplete(Task task)
{
if (task.IsSuccessful)
{
Toast.MakeText(this, "Successful", ToastLength.Long).Show();
FirebaseUser user = FirebaseAuth.GetInstance(app).CurrentUser;
id = user.Uid;
CreateUser();
buttonSignIn.PerformClick();
progressBar.Visibility = ViewStates.Invisible;
}
else
{
//something
}
}
下面是CreateUser()
方法:
private void CreateUser ()
{
Account user = new Account();
user.uid = id;
user.name = signup_inputName;
user.lastName = signup_inputLastName;
user.email = signup_inputEmail;
user.phone = signup_inputPhoneNumber;
var firebase = new FirebaseClient(FirebaseURL);
var item = firebase.Child("users").PostAsync<Account>(user);
}
此代码将用户信息存储在数据库的“用户”节点下。但是在“user”
下还有一个节点带有一些随机值,下面是关于user的信息(包括uid
)。以下是输出:
- Users
-LBGFtYFTfD3l1hmwHVn
email: "testuser@test.com"
lastName:"peric"
name: "pero"
phone: "12321"
uid: "18puc5CzSZfzbdflzekzNCHGHR62"
所以,我的问题是,“users”
节点下面的这个随机值不应该是uid
?如果是,如何设置?
我试过这个:
Account user = new Account();
user.uid = id;
user.name = signup_inputName;
user.lastName = signup_inputLastName;
user.email = signup_inputEmail;
user.phone = signup_inputPhoneNumber;
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users").Child(uid).SetValue(user)
但这不起作用,我得到了这个错误:
Firebase No properties to serialize found on class
即使我在用户类中设置了公共getter和setter
我需要获取用户信息并在我的应用程序的某些地方显示,但我就是无法让它工作。这是我第一次使用Firebase,我已经习惯了SQL数据库,所以这让我很困惑。另外,关于xamarin.android和firebase的在线信息也很少,而且我对编程基本上还是新手。任何帮助都将不胜感激。这是我切换到SQL online数据库之前的最后一次尝试。当您调用
PostAsync
时,客户端会在您调用它的位置下创建一个新的子节点。这类似于大多数其他Firebase SDK中的HTTPPOST
动词和push()
方法
要将数据写入您确切指定的位置,请使用PutAsync
:
var item = firebase.Child("users").Child(uid).PutAsync<Account>(user);
var item=firebase.Child(“用户”).Child(uid).PutAsync.请向我们展示帐户的源代码。我在问题中添加了Account类代码。我是这样尝试的(指定了两个子节点),但总是出现错误,假设它不起作用,然后尝试了其他方法。不知道我应该使用Xamarin.Database.Query。在那之后,它成功了。PutAsync成功了。非常感谢,先生。我将继续阅读提供的链接,希望我以后能够检索到它。
var item = firebase.Child("users").Child(uid).PutAsync<Account>(user);