目前在后端,我在 .NET 中使用 system.net 的 SMTP 讀取郵箱并從 gmail 發送電子郵件,但谷歌現在要求我們進行 OAuth2 身份驗證才能繼續從 GMail 訪問電子郵件。但是到目前為止,我已經設法讓標準的 Google html 界面看起來可以進行此身份驗證,但我需要直接在后端進行此身份驗證。
我的代碼目前:
[HttpGet]
[GoogleScopedAuthorize(GmailService.ScopeConstants.GmailCompose)]
public async Task<ActionResult> userProfile([FromServices] IGoogleAuthProvider auth)
{
try
{
var cred = await auth.GetCredentialAsync();
Console.WriteLine("Auntenticado");
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
return Ok();
}
默認身份驗證螢屏:

我需要它直接在后端進行此身份驗證。
uj5u.com熱心網友回復:
首先,您顯示的代碼表明您正在嘗試使用 Gmail api。這不是 smtp 服務器。
你也包括在內。
[GoogleScopedAuthorize(GmailService.ScopeConstants.GmailCompose)]
這讓我相信您正在關注 asp .net core configure-your-application-to-use-google.apis.auth.aspnetcore3示例。
因此,這就是它的設計目的。它將在用戶計算機上打開同意視窗并請求他們訪問其 gmail 帳戶的權限。
服務器端。
如果您想訪問用戶的 gmail 帳戶服務器端,那么您需要像您已經在做的那樣授權他們,然后存盤回傳的重繪 令牌。然后,您將能夠從您的服務器端應用程式中使用它來訪問用戶的 gmail 帳戶,而無需他們在場。
這里的關鍵是您需要用戶同意才能訪問他們的資料。
申請郵箱賬號
如果您要做的是訪問您控制的帳戶,而這不是您系統用戶的帳戶,那么事情對您來說將更加困難。
除非這是 google 作業區域電子郵件地址,否則您不能使用服務帳戶授權。如果它是一個作業區域帳戶,那么我建議您調查一下。
如果它是一個普通的標準 google gmail 帳戶,那么您將需要授權用戶一次。將重繪 令牌存盤在系統中的某個位置,然后根據需要使用它來請求訪問令牌。您可以為此使用已安裝的應用程式示例。如果您的重繪 令牌出現故障,您將需要觀看它,您將失去訪問權限。此解決方案不是最佳解決方案,但它是唯一可用的選項。
或者您可以使用您現在擁有的代碼嘗試應用程式密碼。谷歌還不清楚這是否會枯萎。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/449545.html
上一篇:.NET終結器是否有超時?
