如何在Firebase数据库中添加用户的姓名,个人资料照片,地址?

时间:2016-09-26 13:31:50

标签: android firebase firebase-realtime-database

我正在尝试创建一个Android应用,我希望将每个用户的个人详细信息(如姓名,个人资料照片和地址)保存到Firebase数据库以备将来使用。

请建议我该怎么做?

3 个答案:

答案 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和重定向用户。希望这会在不久的将来对别人有所帮助。编码愉快!