#node.js #sendgrid
Вопрос:
auth.js Всякий раз, когда я пытаюсь зарегистрировать новую учетную запись, она показывает мне сообщение об ошибке» несанкционированный», я не понимаю, что именно происходит.
exports.register = async (req, res) => {
try {
const { email } = req.body;
// Make sure this account doesn't already exist
const user = await User.findOne({ email });
if (user) return res.status(401).json({message: 'The email address you have entered is already associated with another account.'});
const newUser = new User({ ...req.body, role: "basic" });
const user_ = await newUser.save();
await sendVerificationEmail(user_, req, res);
} catch (error) {
res.status(500).json({success: false, message: error.message})
}
};
отправка электронной почты для подтверждения
async function sendVerificationEmail(user, req, res){
try{
const token = user.generateVerificationToken();
// Save the verification token
await token.save();
let subject = "Account Verification Token";
let to = user.email;
let from = process.env.FROM_EMAIL;
let link="http://" req.headers.host "/api/auth/verify/" token.token;
let html = `<p>Hi ${user.username}<p><br><p>Please click on the following <a href="${link}">link</a> to verify your account.</p>
<br><p>If you did not request this, please ignore this email.</p>`;
await sendEmail({to, from, subject, html});
res.status(200).json({message: 'A verification email has been sent to ' user.email '.'});
}catch (error) {
res.status(500).json({message: error.message})
}
}
Пожалуйста, если вы найдете какое-либо решение, ответьте как можно скорее
, ТИА
Комментарии:
1. Глядя на ответ, похоже, что ошибка в функции «sendVerificationEmail». Возможно, что SendGrid отправляет несанкционированную ошибку.
2. покажите свой код инициализации сервера
3. есть две возможности: одна из них-вы забыли загрузить файл env или неверный секретный ключ
4. Поместите ключ api в .env и используйте require(‘dotenv’).config() в верхней части того же файла
5. @SachinAnanthakumar ты имеешь в виду server.js?
Ответ №1:
Я перешел на nodemailer sendgrid, теперь он работает и использует службу gmail
Комментарии:
1. Евангелист-разработчик Twilio SendGrid здесь. Я рад, что у тебя это получилось. Я просто хотел отметить, что, когда вы говорите, что не получили ошибку, это было не совсем правильно. Вы правильно поймали ошибку, а затем вернули статус 500 в своем коде с сообщением «Несанкционированный». Итак, произошла ошибка, и это было как-то связано с вашими учетными данными API. Итак, вы правильно обработали ошибку, вам просто нужно было устранить проблему с авторизацией.