【问题标题】:Firebase web authenticate and add to databaseFirebase Web 身份验证并添加到数据库
【发布时间】:2017-04-28 12:26:30
【问题描述】:

我坚持这一点,我在这里阅读的其他帖子没有用。所以我已经到了一个地步,我需要在几个小时后寻求帮助,因为我没有解决我认为应该是一项简单的任务。我通常用 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 上的文档,所以请不要把我指向那里:-)

非常感谢期待

【问题讨论】:

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


    【解决方案1】:

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

    现在,当您将数据推送到 /users 时,Firebase 会为该特定数组项创建一个与用户的 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

    【讨论】:

    • 感谢您抽出宝贵时间提供答案,非常感谢。但是,我已经在 Firebase 站点上看到了这些示例,但无法将它们转换为工作模型 :-( 我又花了整个上午的时间试图让它工作。我可以获得 Uid,但在写入时遇到问题数据库。我觉得它应该很容易,而且我正处于解决它的边缘 - 但它没有发生:-(
    • 你能在 JS Fiddle 或代码笔中发布你的代码吗?包含所有相关的 JS 代码
    • 嗨,我没有遇到过代码笔。看起来很有用。当我有机会时,我会尝试将我的代码放在“笔”中 - 虽然有点粗糙:-)
    • J_Everhart383 我将 html 代码放在 Pen 中(正如我所说,目前有点粗糙)。您可以通过搜索 PhilipS 的用户来找到它。希望你能在这里帮助我:-)
    • 我在代码笔搜索中找不到你。您应该能够将其公开并在此处放置链接。如果你能给我一个链接,我很乐意看看
    【解决方案2】:
    var postsRef = ref.child("users/current user id or json key");
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 2020-01-03
      相关资源
      最近更新 更多