Firebase Function 403调用函数时出现禁止错误?

Firebase Function 403 Forbidden error when function invoked?

第一次发帖,如有不妥,敬请见谅。我目前正在尝试构建一个 firebase 函数,该函数从联系表单中获取输入并使用 nodemailer 通过电子邮件将其发送给我。 提交表单时调用该函数,结果是 Error

根据我在网上阅读的内容,该错误与授权有关,通常可以通过将 'allUsers' 添加到云功能仪表板中的滚动 'Cloud function invoker' 来解决。我已经试过了,但没有解决问题。

如果有人能提供任何帮助,我将不胜感激!

谢谢。

我的 Firebase 函数是:

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

// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
//   functions.logger.info("Hello logs!", {structuredData: true});
//   response.send("Hello from Firebase!");
// });
const nodemailer = require("nodemailer");
const cors = require("cors")({ origin: true });
 /** * using gmail with nodemailer */
let transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465, secure: true,
    auth: { 
        user: "Myemail@gmail.com", 
        pass: "********",
        },
});

exports.sendMail = functions.https.onRequest((req, res) => {
    cors(req, res, () => { // getting dest email by query string
        const email = req.query.email; 
        const name = req.query.name;
        const message = req.query.message;
        const mailOptions = {
            from: "Myemail@gmail.com",
            to: "Myemail@gmail.com",
            subject:"Contact Form Message", // email subject
            html: ` <div> From:` + name + `<br /><br />
            Email: ` + email + `<br /><br />
            Message:` + message + `<br /><br /> </div> `, // email content in HTML
            };
// returning result
return transporter.sendMail(mailOptions, (erro, info) => {
    if (erro) { 
    return res.send(erro.toString());
    } 
    return res.send("Message Sent"); 
    });
  });
});

联系方式 html 是:

  <section id="contact_form">
       <div class="container-out">
  <div class="container-in">
    <div class="contact-form">
      <p>Name</p>
      <input type="text" id="contact-name" />
      <p>Email</p>
      <input type="email" id="contact-email" />
      <p>Message</p>
      <textarea id="contact-message"></textarea>
      <button id="send">Send</button>
    </div>
  </div>
</div>
    </section>

Javascript 函数是:

<script type="text/javascript">
document.getElementById("send").addEventListener("click", validateForm);
      function validateForm() {
        //gets the name
        var name = document.getElementById("contact-name").value;
        //gets the email
        var email = document.getElementById("contact-email").value;
        //gets the message
        var message = document.getElementById("contact-message").value;

        //checks if all fields have been filled before sending message.
        if (name.trim() == "" || email.trim() == "" || message.trim() == "") {
          alert("all fields must be filled");
        } else {
          sendMessage(name, email, message);
        }
      }

      //sends information to firebase
      function sendMessage(name, email, message) {
        //sends the name, email and message by passing them as url parameters
        window.location.href =
          "https://us-central1-ccatest-dfd51.cloudfunctions.net/sendMail" +
          "name="
          +
          name +
          "&email=" +
          email +
          "&message=" +
          message +
          "";
      }
</script>

问题出在您尝试访问的URL(它试图访问缺少的函数但被拒绝):

/sendMailname=John%20Smith&email=Jsmith@gmail.com&message=Test%20contact%20form

应该是:

/sendMail?name=John%20Smith&email=Jsmith@gmail.com&message=Test%20contact%20form
         ^