Firebase Web进行身份验证并添加到数据库

时间:2016-12-13 12:29:27

标签: html web firebase firebase-realtime-database firebase-authentication

我坚持这个,我在这里读到的其他帖子没用。所以我已经达到了这样的程度,我需要在几个小时之后寻求帮助才能解决我觉得应该是一项简单的任务。我通常在Swift编程,对html或javasript一点也不了解。

我正在构建一个简单的网页来登录Firebase,另一个链接页面将数据上传到数据库。两者都很好。问题是将上传的数据链接到当前用户的uid。

所以我使用它自己的uid登录现有用户。然后,我如何将数据上传到数据库中的当前用户?应该很简单,但我只是没有得到它: - (

上传数据的代码如下(注意我已尝试同时使用set和push):

// Generate a reference to a new location and add some data using push()
var postsRef = ref.child("users");
 var newPostRef = postsRef.push({

//  var newPostRef = postsRef.set({
    name: _name,
    property: _property,

    email: _email,
    phone: _phone,

任何帮助,或者更好的工作简单示例都会有用。我已经阅读了Firebase上的文档,所以请不要指示我: - )

非常感谢期待

2 个答案:

答案 0 :(得分:3)

最佳做法是使用帐户创建生成的UID作为/ users之后的路径创建新数据库节点。

现在,当您将数据推送到/ users时,Firebase会为该特定数组项创建一个uid,该uid与用户的UID不对应。

如果使用set,则需要指定要设置的路径,其中应包含长UI:/ users / longGUIDhere

您可以使用以下内容获取用户ID(来自Firebase文档):

var user = firebase.auth().currentUser;
var name, email, photoUrl, uid;

if (user != null) {
  name = user.displayName;
  email = user.email;
  photoUrl = user.photoURL;
  uid = user.uid;  // 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 User.getToken() instead.
}

然后你会使用uid来填充下面的路径来保存他们的信息:

function writeUserData(userId, name, email, imageUrl) {
  firebase.database().ref('users/' + userId).set({
    username: name,
    email: email,
    profile_picture : imageUrl
  });
}

我知道您要求不要参考Firebase文档,但看起来您使用的是较旧版本的SDK,因此这也可能是问题的一部分。我建议看看这两页,因为这是我提取这些逐字例子的地方: https://firebase.google.com/docs/database/web/read-and-write https://firebase.google.com/docs/auth/web/manage-users

答案 1 :(得分:1)

var postsRef = ref.child("users/current user id or json key");

这将帮助您更新当前用户的详细信息。