首页 文章

如何通过自定义令牌在firebase身份验证上设置标识符?

提问于
浏览
1

我刚刚使用firebase自定义身份验证系统实现了linkedin注册和登录https://firebase.google.com/docs/auth/admin/create-custom-tokens

Identifier is -

它工作但firebase上的标识符为空 .

我该怎么发送?我应该在创建用户后更新它吗?我想在创建时保存它 .

谢谢

2 回答

  • 1

    试试这个:在您的服务器上,在创建自定义令牌之前,您可以使用电子邮件创建用户:

    // Create the user with email first.
    admin.auth().createUser({uid: uid, email: linkedinEmail})
      .then(function(userRecord) {
        // This will return custom token for that user above.
        return admin.auth().createCustomToken(userRecord.uid);
      })
      .catch(function(error) {
        // Some error.
      });
    

    使用客户端代码的另一个选项是在使用自定义令牌登录后设置电子邮件客户端:

    firebase.auth().signInWithCustomToken(customToken)
      .then(function(result) {
        return firebase.auth().currentUser.updateEmail(linkedinEmail);
      })
      .catch(function(error) {
        // Some error occurred.
      });
    
  • -1

    创建自定义令牌时会自行生成一个唯一的UID并将其保存在数据库中,并且当有人尝试登录时,详细信息与数据库中的凭据匹配并获取正确的UID并使用它创建自定义令牌 . 现在借助自定义令牌,您可以登录

    看看下面的代码,这是我的node.js项目中运行良好的代码

    const functions = require('firebase-functions');
    

    const admin = require('firebase-admin');

    module.exports = functions.https.onRequest((req,res)=> {

    //make a random and distinct uid
    //and save it in database with the users credentials
    //match them at the time of login
    
    admin.auth().createCustomToken(uid)
      .then(function(customToken) {
          res.setHeader('Content-Type', 'application/json');
          var error = false;
          var result = {
              "Error": error,
              "CustomToken": customToken
          };
          res.send(JSON.stringify(result));
      })
      .catch(function(err) {
          res.setHeader('Content-Type', 'application/json');
          var error = true;
          var result = {
              "Error": error,
              "Message": err
          };
          res.send(JSON.stringify(result));
      });
    

    });

相关问题