为了账号安全,请及时绑定邮箱和手机立即绑定

重置用户密码的云函数不起作用

重置用户密码的云函数不起作用

HUH函数 2023-11-12 22:28:51
我正在开发一个 Web 应用程序,该应用程序的部分功能是具有管理员登录名并能够重置用户的密码。我正在使用 firebase 云函数。resetForm.addEventListener('submit', (e) => {        console.log("Step 1");        e.preventDefault();        let newPass = resetForm['reset-password'].value;        const resetPasswordFunction = firebase.functions().httpsCallable('resetPassword');        resetPasswordFunction(docId,newPass).then(() => {            const modal = document.querySelector('#modal-reset');          M.Modal.getInstance(modal).close();          resetForm.reset();        })        console.log("Step 1.5");    });.var functions = require('firebase-functions');var admin = require("firebase-admin");var serviceAccount = require("./troop-30-elections-web-app-firebase-adminsdk-obsmr-6913a9dca3.json");admin.initializeApp({  credential: admin.credential.cert(serviceAccount),  databaseURL: "https://troop-30-elections-web-app.firebaseio.com"});exports.resetPassword = functions.https.onCall((docId,newPass) => {    console.log("step 2");    admin.auth().updateUser(docId, {        password: newPass,    });});我通过填写表格对其进行了测试,但没有任何反应。我在控制台中查看,没有错误,但我看到了步骤 1 和步骤 1.5。
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

对于可调用类型函数,必须返回一个 promise,该 promise 生成要发送回调用它的客户端应用的对象值。只有当所有异步工作完成时,该承诺才必须解析,否则函数将在工作完成之前关闭。

现在,您的函数不返回任何内容,并且忽略了 updateUser() 返回的 promise。Cloud Functions 在工作完成之前终止该函数:承诺被忽略。您的代码应改用该 promise 并将结果发送回客户端。这将发送一个空对象,但您可以在其中执行任何您想要的事情:

    return admin.auth().updateUser(docId, { password: newPass })
    .then(() => { 
           return {};  // this is what gets sent back to the app
    });


查看完整回答
反对 回复 2023-11-12
?
萧十郎

TA贡献1815条经验 获得超13个赞

我做了更多的研究并编辑了我的代码。这工作原理:


resetForm.addEventListener('submit', (e) => {

        console.log("Step 1");

        e.preventDefault();

        let newPass = resetForm['reset-password'].value;

        const resetPasswordFunction = firebase.functions().httpsCallable('resetPassword');

        resetPasswordFunction({docId: docId, newPass: newPass}).then(() => {

            const modal = document.querySelector('#modal-reset');

          M.Modal.getInstance(modal).close();

          resetForm.reset();

        });

        console.log("Step 1.5");

    });

.


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

var admin = require("firebase-admin");

var serviceAccount = require("./troop-30-elections-web-app-firebase-adminsdk-obsmr-6913a9dca3.json");

admin.initializeApp({

  credential: admin.credential.cert(serviceAccount),

  databaseURL: "https://troop-30-elections-web-app.firebaseio.com"

});


exports.resetPassword = functions.https.onCall((data) => {

  return admin.auth().updateUser(data.docId, { 

    password: data.newPass

   })

  .then(() => {

      return {"text": "User Password Successfully Updated"};  // this is what gets sent back to the app

  });

});


查看完整回答
反对 回复 2023-11-12
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信