【问题标题】:Firebase - TypeError: admin.auth(...).createUserWithEmailAndPassword is not a functionFirebase - TypeError:admin.auth(...).createUserWithEmailAndPassword 不是函数
【发布时间】:2018-11-25 18:46:34
【问题描述】:

我正在尝试使用云功能在 firebase 数据库中创建用户。这是我的代码:

exports.AddUser = functions.https.onRequest(function(req, res){

    if(req.method == 'GET'){
        email = req.query.email;
        password = req.query.password;
        name = req.query.name;

        admin.auth().createUserWithEmailAndPassword(email, password).then(function(user){
            user.sendEmailVerification().then(function(){
                res.send("verification email sent.");
            }).catch(function(){
                res.end(user)
            })
        })
        .catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
            console.log(errorMessage);
            res.send(errorMessage);
        });

    }else{
        email = req.body.email;
        password = req.body.password;
        name = req.body.name;

        admin.auth().createUserWithEmailAndPassword(email, password).then(function(user){
            user.sendEmailVerification().then(function(){
                res.send("verification email sent.");
            }).catch(function(error){
                res.end(user)
            });
        })
        .catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
            console.log(errorMessage);
            res.send(errorMessage);
        });

    }

});

这是我的 package.json:

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "firebase-admin": "~5.12.0",
    "firebase-functions": "^1.0.1"
  },
  "private": true
}

当我只使用admin.createUser() 时它可以工作,但我不能使用user.sendEmailVerification(),因为由于某些原因,它只有在使用admin.createUserWithEmailAndPassword() 创建用户时才可用。

这是我在 firebase 控制台中得到的:

TypeError: admin.auth(...).createUserWithEmailAndPassword is not a function
    at /user_code/index.js:26:26
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:37:41)
    at /var/tmp/worker/worker.js:684:7
    at /var/tmp/worker/worker.js:668:9
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

我该怎么办?这里,

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

我是 Firebase 和云功能的新手,非常抱歉。

【问题讨论】:

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


    【解决方案1】:

    你只需要使用 auth().createUser 而不是 createUserWithEmailAndPassword

    admin.auth().createUser({
     email: 'user@example.com',
     emailVerified: false,
     phoneNumber: '+11234567890',
     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

    【讨论】:

      【解决方案2】:

      该消息告诉您您需要知道的一切。节点管理 SDK 中没有该名称的方法。

      你可以在admin.auth()in the API docs上看到所有方法的列表。

      createUserWithEmailAndPassword 仅存在 in the client SDK

      【讨论】:

      猜你喜欢
      • 2017-01-13
      • 2016-09-27
      • 2017-05-17
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多