如何为已发布的 google Play 商店应用重新指定 nodemailer for firebase 云函数的凭据?
How to re-specify credentials for nodemailer for firebase cloud functions for a published google play store app?
Firebase Cloud Functions 控制台日志的屏幕截图
我在 Google Play 商店发布了一个应用程序,它是我在学习 android/firebase 时构建的。我完全是个新手。
我添加了执行向新用户发送欢迎电子邮件等任务的云功能。然而,在部署云 functions/app 时,我在命令行上询问了我的 gmail 电子邮件和密码。我提交了它们。但是,我现在已经更改了我的 gmail 密码,Google 不允许我再次使用旧密码。因此,由于身份验证错误,我的应用现在无法执行这些云功能。附上错误日志截图。
如何指定我的新凭据以使我发布的应用程序再次正常工作?
我在 Firebase 控制台上找不到任何相关内容或选项。应该遵循哪些最佳实践,这样我以后就不会像这样卡住并且可以自由更改开发者帐户的密码并且不影响我的应用程序?
编辑:
以下是屏幕截图中的文字:
sendWelcomeEmail Error: Invalid login: 535-5.7.8 Username and Password
not accepted. Learn more at 535 5.7.8
https://support.google.com/mail/?p=BadCredentials
q187-v6sm4997775iof.67 - gsmtp at SMTPConnection._formatError
(/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:591:19)
at SMTPConnection._actionAUTHComplete
(/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:1320:34)
at SMTPConnection._responseActions.push.str
(/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:356:26)
at SMTPConnection._processResponse
(/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:747:20)
at SMTPConnection._onData
(/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:543:14)
at TLSSocket._socket.on.chunk
(/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:495:47)
at emitOne (events.js:96:13) at TLSSocket.emit (events.js:188:7) at
readableAddChunk (_stream_readable.js:176:18) at
TLSSocket.Readable.push (_stream_readable.js:134:10)
这里是通过nodemailer发送邮件的函数:
// Sends a welcome email to the given user.
function sendWelcomeEmail(email, displayName) {
const mailOptions = {
from: `noreply@example.com`,
to: email
};
mailOptions.subject = `Welcome to ${APP_NAME}!`;
mailOptions.text = `Hey ${displayName || ''},\n\nWelcome to ${APP_NAME}!...........`;
return mailTransport.sendMail(mailOptions).then(() => {
console.log('New welcome email sent to:', email);
});
}
看起来您在创建 mailTransport
对象时指定了您的用户名和密码(您没有显示其代码)。您可能复制并粘贴了 this Whosebug question
之类的代码
const mailTransport = nodemailer.createTransport(
`smtps://user@domain.com:password@smtp.gmail.com`);
如果这是您所做的,那么这就是您需要更改密码的地方。
您需要为您的 Firebase 项目编辑环境变量。
为了方便配置,你可以看看Google Cloud Shell. Open a shell for your project here。
然后,按照 this 到 get/set 你的环境变量。
编辑:
在Google云端Shell,命令
firebase functions:config:get --project <project_id_here>
将项目的当前环境配置输出为 JSON。您可以使用它来检查您的环境变量。
对于您的问题,您可能需要使用命令,
firebase functions:config:set gmail.password="your_password_here" --project <project_id_here>
将您的环境变量(即 gmail.password)设置为新值。 --project 是必需的,因为您在 Google Cloud Shell.
中工作
Firebase Cloud Functions 控制台日志的屏幕截图
我在 Google Play 商店发布了一个应用程序,它是我在学习 android/firebase 时构建的。我完全是个新手。
我添加了执行向新用户发送欢迎电子邮件等任务的云功能。然而,在部署云 functions/app 时,我在命令行上询问了我的 gmail 电子邮件和密码。我提交了它们。但是,我现在已经更改了我的 gmail 密码,Google 不允许我再次使用旧密码。因此,由于身份验证错误,我的应用现在无法执行这些云功能。附上错误日志截图。
如何指定我的新凭据以使我发布的应用程序再次正常工作?
我在 Firebase 控制台上找不到任何相关内容或选项。应该遵循哪些最佳实践,这样我以后就不会像这样卡住并且可以自由更改开发者帐户的密码并且不影响我的应用程序?
编辑:
以下是屏幕截图中的文字:
sendWelcomeEmail Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials q187-v6sm4997775iof.67 - gsmtp at SMTPConnection._formatError (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:591:19) at SMTPConnection._actionAUTHComplete (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:1320:34) at SMTPConnection._responseActions.push.str (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:356:26) at SMTPConnection._processResponse (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:747:20) at SMTPConnection._onData (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:543:14) at TLSSocket._socket.on.chunk (/user_code/node_modules/nodemailer/lib/smtp-connection/index.js:495:47) at emitOne (events.js:96:13) at TLSSocket.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:176:18) at TLSSocket.Readable.push (_stream_readable.js:134:10)
这里是通过nodemailer发送邮件的函数:
// Sends a welcome email to the given user.
function sendWelcomeEmail(email, displayName) {
const mailOptions = {
from: `noreply@example.com`,
to: email
};
mailOptions.subject = `Welcome to ${APP_NAME}!`;
mailOptions.text = `Hey ${displayName || ''},\n\nWelcome to ${APP_NAME}!...........`;
return mailTransport.sendMail(mailOptions).then(() => {
console.log('New welcome email sent to:', email);
});
}
看起来您在创建 mailTransport
对象时指定了您的用户名和密码(您没有显示其代码)。您可能复制并粘贴了 this Whosebug question
const mailTransport = nodemailer.createTransport(
`smtps://user@domain.com:password@smtp.gmail.com`);
如果这是您所做的,那么这就是您需要更改密码的地方。
您需要为您的 Firebase 项目编辑环境变量。
为了方便配置,你可以看看Google Cloud Shell. Open a shell for your project here。
然后,按照 this 到 get/set 你的环境变量。
编辑:
在Google云端Shell,命令
firebase functions:config:get --project <project_id_here>
将项目的当前环境配置输出为 JSON。您可以使用它来检查您的环境变量。
对于您的问题,您可能需要使用命令,
firebase functions:config:set gmail.password="your_password_here" --project <project_id_here>
将您的环境变量(即 gmail.password)设置为新值。 --project 是必需的,因为您在 Google Cloud Shell.
中工作