【问题标题】:Can I create a user on Firebase Authentication in Cloud Functions Http Trigger?我可以在 Cloud Functions Http Trigger 中的 Firebase 身份验证上创建用户吗?
【发布时间】:2017-10-04 01:00:33
【问题描述】:

是否可以从 Cloud Functions 内部创建用户(电子邮件/密码类型)? 我正在寻找对此的参考,但一无所获。

【问题讨论】:

  • 在控制台上转到您的项目设置并生成服务帐户密钥。这是您可以使用cloud.google.com/iam/docs/… 的官方文档。咻。

标签: node.js firebase firebase-authentication google-cloud-functions


【解决方案1】:

createUser() 函数让您做到这一点。

admin.auth().createUser({
    email: "user@example.com",
    emailVerified: false,
    password: "secretPassword",
    displayName: "John Doe",
    photoURL: "http://www.example.com/12345678/photo.png",
    disabled: false
})
.then(function(userRecord) {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log("Successfully created new user:", userRecord.uid);
})
.catch(function(error) {
    console.log("Error creating new user:", error);
});

https://firebase.google.com/docs/auth/admin/manage-users#create_a_user

【讨论】:

  • 我目前正在尝试执行此操作,这会导致“访问请求的资源的权限不足。”。我已经使用 admin.initializeApp(functions.config().firebase) 初始化了应用程序
  • 我们可以通过云功能添加不同类型的角色吗?
  • 添加到第一行 admin.initializeApp()
【解决方案2】:

使用这个基于 Http 的函数使端点创建用户。

链接将是这样的。 https://us-central1-FIREBASE-PROYECT.cloudfunctions.net/register

exports.register = functions.https.onRequest((request,response)=>{

if (request.method !== "POST") {
    response.status(400).send("what are you trying baby?");
    return 0;
}

const email = request.body.email;
const pass = request.body.pass;

admin.auth().createUser({
    email: email,
    emailVerified: true,
    password: pass,
})
    .then(function(userRecord) {
        // See the UserRecord reference doc for the contents of userRecord.
        console.log("Conductor " + email + "Creado" );
        response.send({"uid":userRecord.uid});
        return 1;
    })
    .catch(function(error) {
        response.send("Error: "+error);
        console.log("Error creating new user:", error);
        return 1;
    });

return 1;
});

【讨论】:

    【解决方案3】:

    对于遇到@tonsteri 问题“访问所请求资源的权限不足”的任何人:

    要解决您的权限不足问题,您需要更新到云功能包的 v2。我在使用 v1 时遇到了同样的问题 - 升级解决了这个问题。

    我会在线回复,但我缺乏足够的声誉。

    【讨论】:

      【解决方案4】:

      根据@mike-brian-olivera的回答我做了一个功能云,你可以在前端调用

      exports.register = functions.https.onCall((data, context) => {
          const { email, pass } = data;
      
          return admin
              .auth()
              .createUser({
                  email,
                  password: pass,
              })
              .then(userRecord => {
                  // See the UserRecord reference doc for the contents of userRecord.
      
                  console.log({ uid: userRecord.uid });
                  return { success: userRecord.uid };
              })
              .catch(error => {
                  return { error: error.message };
              });
      });
      

      【讨论】:

      • admin 是在哪里定义的?
      【解决方案5】:

      前段时间我遇到了完全相同的问题,这就是我在打字稿中解决它的方法:

      admin.initializeApp();
      const db = admin.firestore();
      export const createUsr = functions.https.onCall((data) => {
      
              return admin.auth().createUser({
                  email: data.email,
                  emailVerified: true,
                  password: data.password,
                  displayName: data.nombre,
                  disabled: false,
                  photoURL: data.urldeImagen
              }).then(
                  (userRecord) => {
                      console.log('Se creó el usuario con el uid: ' + userRecord.uid);
                      const infoUsr = {
                          Activo: false,
                          Contrasenia: data.password,
                          Correo: data.email,
                          Foto: data.nombrefoto,
                          Llave: userRecord.uid,
                          Nombre: data.nombre,
                          PP: false,
                          Privilegios: data.privilegios,
                          UrldeImagen: data.urldeImagen
                      };
                      //update your db 
                      return db.collection....
                  ).catch((error) => {
                      console.log(error);
                      return error
                  });
              });
      

      【讨论】:

        猜你喜欢
        • 2020-09-17
        • 2018-07-09
        • 1970-01-01
        • 2019-04-04
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        相关资源
        最近更新 更多