C# 使用AWS Lambda的Google API授权-不支持文件数据存储
我已经创建了一个WebAPI并将其发布到AWS Lambda。在这个API中,我通过GMail SMTP自动发送一些电子邮件。我的电子邮件代码如下所示:C# 使用AWS Lambda的Google API授权-不支持文件数据存储,c#,amazon-web-services,google-api,aws-lambda,google-authentication,C#,Amazon Web Services,Google Api,Aws Lambda,Google Authentication,我已经创建了一个WebAPI并将其发布到AWS Lambda。在这个API中,我通过GMail SMTP自动发送一些电子邮件。我的电子邮件代码如下所示: var secrets = new ClientSecrets { ClientId = Environment.GetEnvironmentVariable("GMailClientId"), ClientSecret = Environment.GetEnvironmentVariable("GMailClientSecre
var secrets = new ClientSecrets
{
ClientId = Environment.GetEnvironmentVariable("GMailClientId"),
ClientSecret = Environment.GetEnvironmentVariable("GMailClientSecret")
};
var googleCredentials = await GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, new[] { GmailService.Scope.MailGoogleCom }, ((MailboxAddress)message.From.First()).Address, CancellationToken.None);
if (googleCredentials.Token.IsExpired(SystemClock.Default))
{
await googleCredentials.RefreshTokenAsync(CancellationToken.None);
}
using (var client = new SmtpClient())
{
client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
var oauth2 = new SaslMechanismOAuth2(googleCredentials.UserId, googleCredentials.Token.AccessToken);
client.Authenticate(oauth2);
await client.SendAsync(message);
client.Disconnect(true);
}
这在我的本地计算机上运行得非常好,但是当尝试通过AWS Lambda运行它时,调用GoogleWebAuthorizationBroker.AuthorizationAsync
时,我得到以下错误:
此平台不支持相对文件数据存储路径
GoogleWebAuthorizationBroker
将authorizationasync
定义为:
public static Task<UserCredential> AuthorizeAsync(ClientSecrets clientSecrets, IEnumerable<string> scopes, string user, CancellationToken taskCancellationToken, IDataStore dataStore = null, ICodeReceiver codeReceiver = null);
public static Task AuthorizeAsync(ClientSecrets ClientSecrets,IEnumerable scopes,string user,CancellationToken taskCancellationToken,IDataStore dataStore=null,ICodeReceiver codeReceiver=null);
我没有向dataStore参数提供任何内容,因此默认情况下,它使用的是FileDataStore
实现
我猜Lambda不喜欢这样,因为它试图访问文件系统
以前有没有人遇到过这个问题?如果有,您知道解决方案吗?我不确定任何针对IDataStore
的谷歌实现都能起作用?
编辑:
我想知道是否需要创建IDataStore的db实现?类似于:。谷歌没有提供这样的实现似乎有点奇怪…你解决了这个问题吗?我也有类似的问题