在我的Android应用中,我已使用Firebase Auth程序实施了Google登录。 为:
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, SIGNIN_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SIGNIN_CODE) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// Authenicate with my Firebase
GoogleSignInAccount account = task.getResult(ApiException.class);
ProgressDialog dialog = new ProgressDialog(this); //ProgressDialog.show(this, null, "Please wait while we load sign in..", true);
dialog.setMessage("Please wait while we load sign in..");
dialog.setIndeterminate(true);
Drawable drawable = new ProgressBar(this).getIndeterminateDrawable().mutate();
drawable.setColorFilter(ContextCompat.getColor(this, R.color.progress),
PorterDuff.Mode.SRC_IN);
dialog.setIndeterminateDrawable(drawable);
dialog.show();
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
// Google Sign In failed?
Log.w(TAG, "Google sign in failed", e);
}
}
} //A lot more stuffs etc etc..
我已经有了一个SQlite离线数据库。现在只有登录用户,我希望用户可以将SQlite数据库的内容与firebase数据库同步,用户可以在线访问/同步。
但是如何为具有UID等的个人登录用户组织单个firebase数据库。?
更具体的建议/教程会很好:)
答案 0 :(得分:1)
可以这样做,您需要限制对数据的访问,以便每个用户只能通过定义如下的firebase安全规则来访问他/她的数据。
service cloud.firestore {
match /databases/{database}/documents {
match /yourrootnode/{uid} {
allow read, write: if request.auth.uid == uid;
}
}
保存来自app的用户特定数据,如下所示,此处dataModelObj对象应包含uid字段,您需要从用户对象填充它,如dataModelObj .setUid(user.getUid());
firestoreDB.collection("yourrootnode")
.add(dataModelObj)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
.....
然后你就可以在app中只读取用户数据了。
firestoreDB.collection("yourrootnode")
.whereEqualTo("uid", user.getUid())
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
....
}
有关详细信息,请查看http://www.zoftino.com/android-firebase-email-password-authentication
答案 1 :(得分:0)
您无法为每个用户创建单独的数据库,但您可以为多个用户组织单个数据库。为用户预留数据库节点是常规的,并使用Firebase身份验证中的UID为每个用户创建一个空间。
例如,用户的数据库部分可以这样组织:
/users
/uid1
/name
/uid2
/name
然后,您需要使用user based security rules保护每用户数据。