这是长版:
我对Firebase和Android Studio完全不熟悉,我已经写了一些部分,比如在我的应用中使用google和FB登录。我跟着this tutorial。
一切正常但我现在要做的是从用户那里收集一些信息并将其存储在Firebase数据库中(我认为我的基本想法)。但问题是,我不知道如何在用户第一次创建帐户时知道它,因为我只想在每个帐户中询问一次这些详细信息。所以我想我会使用Auth的'User UID'。但是,我遇到的问题是,在使用上述教程时,我应该如何/在哪里编写代码来检查用户是否已经存在。我应该在数据库的规则部分或代码本身中执行此操作吗?
我将按照教程发布我制作的代码。如果这是一个noob问题,我很抱歉,但我认识的开发人员都没有使用Firebase UI的经验。所以我真的没有人问过他。任何帮助表示赞赏。
MainActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.firebase.ui.auth.AuthUI;
import com.google.firebase.auth.FirebaseAuth;
public class MainActivity extends AppCompatActivity {
private static final int RC_SIGN_IN=0;
private FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
auth = FirebaseAuth.getInstance();
if(auth.getCurrentUser() != null) {
//user already signed in
Log.d("AUTH", auth.getCurrentUser().getEmail());
Intent intent = new Intent(this, com.jacob.appdevitae.HomeActivity.class);
startActivity(intent);
finish();
}
else {
startActivityForResult(AuthUI.getInstance()
.createSignInIntentBuilder()
.setProviders(
AuthUI.FACEBOOK_PROVIDER,
AuthUI.GOOGLE_PROVIDER)
.build(),RC_SIGN_IN);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_SIGN_IN) {
if(resultCode == RESULT_OK) {
//User logged in
Log.d("AUTH", auth.getCurrentUser().getEmail());
Intent intent = new Intent(this, com.jacob.appdevitae.HomeActivity.class);
startActivity(intent);
finish();
}
else {
//User not authenticated
Log.d("AUTH", "NOT AUTHENTICATED");
}
}
}}
答案 0 :(得分:1)
首先在应用程序级别gradle中添加依赖项 com.google.firebase:火力数据库:9.6.1
用户只需签署一次,因此您无需检查用户是否存在,只需在注册后添加信息即可。
例如:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_SIGN_IN) {
if(resultCode == RESULT_OK) {
//User logged in
Log.d("AUTH", auth.getCurrentUser().getEmail());
//create the database
DatabaseReference mdatabase=FirebaseDatabase.getInstance.getReference.child("User-Information");
//set the information, you can put how much as you want
mdatabase.child("user-information1").setValue("User-information1");
mdatabase.child("user-information2").setValue("User-information2")
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(LOG_TAG, "signIn:onComplete:" + task.isSuccessful());
if (task.isSuccessful()) {
//success
} else {
//Error
}
}
});;
Intent intent = new Intent(this, com.jacob.appdevitae.HomeActivity.class);
startActivity(intent);
finish();
}
else {
//User not authenticated
Log.d("AUTH", "NOT AUTHENTICATED");
}
}