Firebase云功能可以将OAuth2与gmail一起使用吗?

时间:2018-04-17 07:03:03

标签: firebase google-cloud-functions gmail-api google-oauth2 nodemailer

根据https://github.com/firebase/functions-samples/blob/master/email-confirmation/README.md

  

为了能够使用您的Gmail帐户发送电子邮件:启用安全性较低的应用显示解锁验证码的访问权限。对于启用了两步验证的帐户生成应用密码

查看节点邮件的文档,通过Gmail SMTP发送电子邮件的最安全方式似乎是http://nodemailer.com/smtp/oauth2/

我的问题是,假设我按照send emails from MY gmail account with OAuth2 and nodemailer中的建议收集执行OAuth2所需的所有字段,那么OAuth2方法是否与云函数不兼容?

每次调用都需要refreshToken生成新的accessToken吗?这肯定会增加成本,因为云功能需要更长的时间才能运行,我是否正确?

这就是为什么firebase函数在github repo中的样本故意没有包含也没有提到更安全的OAuth2方法?

1 个答案:

答案 0 :(得分:2)

可以将OAuth与云功能结合使用。您可以查看this link以获取更多信息,但这里有一些摘要:

首先,您需要配置OAuth客户端ID以用于Gmail API。启用API并选择区域后,转到Cloud Console并根据您正在开发的功能创建相应的凭据。它应该包括应用程序类型,客户端名称和一些授权的JavaScript源,如上面的链接所示。这将为您提供一个安全存储的客户秘密。

您还需要根据您在控制台中应用的设置配置一些文件,例如index.jspackage.json,以及重命名您使用之前配置收到的客户端密码。将适当的项目和区域添加到文件后,就可以使用链接中包含的命令部署这些功能,在index.js文件所在的同一目录中启动部署。 >

至于是否需要每次在每次调用时使用刷新令牌生成新的访问令牌,这取决于访问令牌何时设置为过期,或者您认为当前访问令牌不安全。只要访问令牌有效,刷新令牌就可以在您认为合适的任何时候使用,但不能用于对函数的每次调用。

费用将根据您在整个月内执行的调用次数而有所不同,前200万次是免费的,而计算时间成本可能会根据使用的内存和CPU数量而有所不同。 Here您可以查看云功能目前的定价方式。据我所知,使用刷新令牌更新访问令牌等操作似乎对成本没有太大影响。

我解释的所有这些都与云功能有关,而不是与Firebase有关。我不熟悉Firebase的使用,但我认为由于函数示例应尽可能简单,因此它们将包含更简单的身份验证方法。无论如何,您可以自己添加OAuth选项,如Firebase documentation中所示。

我希望所有这些都有助于您了解如何将OAuth与云功能结合使用。