我正在尝试创建一个Android应用,我希望将每个用户的个人详细信息(如姓名,个人资料照片和地址)保存到Firebase数据库以备将来使用。
请建议我该怎么做?
答案 0 :(得分:28)
你没有花时间熟悉These Firebase Docs。这就是为什么你的问题有这么多的低票的原因。我仍然想简要介绍一下Firebase为您提供的内容:
//这是您获取每个登录用户的用户个人资料数据的方法
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// Name, email address, and profile photo Url
String name = user.getDisplayName();
String email = user.getEmail();
Uri photoUrl = user.getPhotoUrl();
// The user's ID, unique to the Firebase project. Do NOT use this value to
// authenticate with your backend server, if you have one. Use
// FirebaseUser.getToken() instead.
String uid = user.getUid();
}
//这是您更新每个登录用户的用户个人资料数据的方法
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName("Jane Q. User")
.setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg"))
.build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
}
}
});
如果您使用的是firebase而没有实施任何身份验证和安全规则,那么我会说您应该尽快更改它。由于没有身份验证和适当的安全规则,任何人都可以访问您的数据库并以他/她想要的任何方式对其进行更改。
对于已登录的用户,您无需执行任何额外或特殊操作即可保存其个人资料详细信息。如果您使用Gmail,Facebook等身份验证提供程序,则firebase会自动保存基本个人资料信息。如果您使用的是某种自定义身份验证方法,请参阅firebase提供的更新用户个人资料代码段。这就是你保存基本用户档案的方法。
请告诉我这是否对您有所帮助。
答案 1 :(得分:1)
我在项目中使用了此代码。这个对我有用。 signUp.dart
onPressed: () {
FirebaseAuth.instance.createUserWithEmailAndPassword(
email: _email, password: _password).then((signedInUser) {
_uid= signedInUser.uid;
Map<String,String> userDetails = {'email':this._email,'displayName':this._displayname,'uid':this._uid,
'photoUrl':this._photo};
_userManagement.addData(userDetails,context).then((result){
}).catchError((e){
print(e);
});
}).catchError((e) {
print(e);
});
},
userManagement.dart
Future<void> addData(postData,context) async{
Firestore.instance.collection('/users').add(postData).then((value){
Navigator.of(context).pop();
Navigator.of(context).pushReplacementNamed('/homepage');
}).catchError((e){
print(e);
});
}
答案 2 :(得分:1)
Nishants的帮助得到答复,这对我当前使用Kotlin的项目有效。
fun registerUser(email: String, password: String, displayName: String) {
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(requireActivity()) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "createUserWithEmail:success")
val user = auth.currentUser
val profileUpdates =
UserProfileChangeRequest.Builder()
.setDisplayName(displayName)
.setPhotoUri(Uri.parse("https://firebasestorage.googleapis.com/v0/b/fakelogisticscompany.appspot.com/o/default.png?alt=media&token=60224ebe-9bcb-45fd-8679-64b1408ec760"))
.build()
user!!.updateProfile(profileUpdates)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d(TAG, "User profile updated.")
}
}
showAlert("Created your account successfully!")
updateUI(user)
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "createUserWithEmail:failure", task.exception)
showAlert("Authentication failed!")
// updateUI(null)
}
}
}
我正在创建用户并随后更新详细信息。 showAlert和updateUI是我自己的函数,用于显示alertdialog和重定向用户。希望这会在不久的将来对别人有所帮助。编码愉快!