以下是详细内容:
我对Firebase和Android Studio都是新手,但已经在我的应用程序中编写了一些部分,比如使用Google和FB进行登录。我遵循了这个教程。
一切运行良好,但现在我想做的是从用户收集一些信息并将其存储在Firebase数据库中(我认为我有一个基本的概念)。但问题是我不知道如何知道用户是否第一次创建账户,因为我只想要求每个账户提供这些信息一次。所以我想使用来自Auth的“用户UID”。但是我遇到的问题是,当使用上述教程时,我应该在哪里/如何编写代码来检查用户是否已经存在。我应该在数据库的规则部分还是在代码本身中执行此操作?
我会发布我通过遵循教程制作的代码。如果这是一个初学者问题,我很抱歉,但是我认识的开发人员都没有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");
}
}
}}