我可以使用GOOGLE_APPLICATION_CREDENTIALS而不是特定的邮件设置

时间:2018-05-24 22:23:46

标签: python-3.x flask google-cloud-platform flask-security flask-mail

我试图通过Flask-security设置电子邮件确认,我想知道是否可以使用我从https://console.cloud.google.com/apis/credentials/serviceaccountkey获得的GOOGLE_APPLICATION_CREDENTIALS 而不是设置邮件设置(MAIL_SERVER,MAIL_PASSWORD等)。

这是我的代码:

class BaseConfig:
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_RECORD_QUERIES = False
SQLALCHEMY_EXPIRE_ON_COMMIT = False

MARSHMALLOW_STRICT = True
MARSHMALLOW_DATEFORMAT = 'rfc'

SECRET_KEY = 'secret_key'
SECURITY_LOGIN_SALT = 'test'
SECURITY_PASSWORD_HASH = 'pbkdf2_sha512'
SECURITY_TRACKABLE = True
SECURITY_PASSWORD_SALT = 'something'
WTF_CSRF_ENABLED = False
SECURITY_REGISTERABLE = True
SECURITY_CONFIRMABLE = True
SECURITY_RECOVERABLE = True
SECURITY_TOKEN_AUTHENTICATION_HEADER = 'Authorization'
MAX_AGE = 86400
GOOGLE_APPLICATION_CREDENTIALS = '\google_credentials_etc.json' 

谢谢。

1 个答案:

答案 0 :(得分:1)

GOOGLE_APPLICATION_CREDENTIALS由Google客户端库使用,并且仅在设置为环境变量时使用。它与Flask无关,客户端库也不会自动从Flask配置中获取它。

您可以json.loads服务帐户文件,然后提取电子邮件,但凭证文件中没有服务信息或中继服务器信息。

更重要的是,flask-mail无法通过oauth2连接。它使用SMTP。我很漂亮Gmail继电器也是SMTP。因此,即使您以某种方式从服务帐户获得了oauth2令牌,您也无法使用它来连接到中继服务器。