Firebase 实时数据库—unity 用户验证方式
Firebase 实时数据库—unity 用户验证方式
研究了半天Firebase 实时数据库的验证方式 终于搞懂了 有时候感觉官方给的方案可能不是简单的。。。
步
先把firebase 的数据库包接入unity后 简单就是把
FirebaseDatabase.unitypackage 直接导入进unity就好了 这里如果已经接入过FirebaseAnalytics.unitypackage 后再导入的FirebaseDatabase 运行时可能unity会崩溃 这时候把FirebaseAnalytics.unitypackage再导入一遍就好了
第二步
这时候就跳到firebase控制台 link. 去创建一个实时数据库
开始操作了 在左侧的Database 里面的Realtime Database 这里创建好了后会看到上面的一个数据库链接 这就是unity里面用来初始化数据库的链接
创建好了后 点击RUles 里面 默认会看到的配置是
这里就是用来配置用户访问权限的 read write 对应 读写权限
这里都是false 就表示所有用户都没有读写权限
然后开始的简单测试时可以直接都改成true 就表示所有用户都有读写权限了(这里表示别的用户也可以直接访问和修改你的数据 所有这就是要加验证方式的原因了)
第三步
添加用户
先需要到firebase的控制台去添加一个邮箱账号 在左侧的Authentication里面 在Users里面点击Add user
然后按步骤添加一个邮箱账号和密码就好了 然后再Sign-in method 里面把个 Email/Password 的Status打开 默认是禁用的 这个时候 你就可以用你刚刚添加的邮箱和密码来操作了
第四步
现在就去Unity里面添加登陆用户信息了 直接上代码了
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
auth.SignInWithEmailAndPasswordAsync("刚刚添加的邮箱", "密码").ContinueWith(task =>
{
if (task.IsCanceled)
{
Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted)
{
Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
Firebase.Auth.FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
newUser.DisplayName, newUser.UserId);
Debug.Log("数据库初始化成功");
});
第五步
后一步了。。。
现在就回到开始 默认是针对所有用户的 现在就在刚刚创建数据库里面的Rules去修改配置文件了
{
"rules": {
".read": "auth.uid === 'xxxx'",
".write": "auth.uid === 'xxxx'"
}
}
这里的auth 如果你Unity接入没问题 用户登陆成功后这里的auth就不会为空,这里的uid就对应你刚刚添加邮箱里面的uid(可以回到刚刚添加邮箱的界面 uid 就在你刚刚添加邮箱后面的 user UID) 把这里的xxxx改成你对应的uid就好了 现在就可以去代码里面验证了
拉取信息代码 这是做的一个简单的拉排行版数据的
database.GetReference("rank").OrderByChild("score").LimitToFirst(5).GetValueAsync().ContinueWith(task_ =>
{
if (task_.IsFaulted)
{
// Handle the error...
Debug.Log("Handle the error...");
}
else if (task_.IsCompleted)
{
DataSnapshot snapshot = task_.Result;
// Do something with snapshot...
//snapshot.Value 就是拉到的数据了
}
});
这里验证需要到移动端上面去翻*墙验证
有时候问题可以留言一起讨论。。。。新手勿喷。。。
相关文章