我創建了一個控制檯應用程序,該應用程序使用OAuth2對GoogleAnalyticsApiV4進行身份驗證以查詢一些數據。該應用程序按預期工作,但我們希望自動化該過程,以便應用程序可以安排爲每天運行一次。這裏的問題是應用程序將託管在Azure上,並且用戶無法接受第一次運行應用程序時在瀏覽器中彈出的Google驗證請求。使用OAuth2在C#中使用Google API進行身份驗證
按照網上的帖子和谷歌文檔,我目前的解決方案來驗證這是
try
{
var credential = GetCredential().Result;
using (var svc = new AnalyticsReportingService(
new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "Google Analytics API Console"
}))
{
///// Query some data/////
}
static async Task<UserCredential> GetCredential()
{
using (var stream = new FileStream("client_secret.json",
FileMode.Open, FileAccess.Read))
{
string loginEmailAddress = ConfigurationManager.AppSettings["GoogleUsername"];
return await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { AnalyticsReportingService.Scope.Analytics },
loginEmailAddress, CancellationToken.None,
new FileDataStore("GoogleAnalyticsApiConsole"));
}
}
這個解決方案工作得很好,只要用戶可以輸入憑據與谷歌進行身份驗證並接受認證請求。不幸的是,只要應用程序移動到另一臺機器上,它需要重新進行身份驗證,並且用戶需要再次輸入憑據並接受請求。
我一直在尋找一種方式將用戶帶出進程,以便應用程序可以在azure上運行,但是沒有發現任何關於如何在c#中執行此操作的明確信息。
請有人能描述我如何在沒有用戶的情況下使用谷歌認證我的應用程序,或者指出我準確覆蓋過程的文檔方向。
幫助或例子將不勝感激。
謝謝你的回覆迅速,我有機會獲得帳號,所以我現在看你的示例代碼。 – user2920648
確保您在Google Analytics(分析)管理員中授予訪問權限時,您可以在帳戶級別執行此操作。如果你對樣品有任何問題,請告訴我。 – DaImTo
我有一個輕微的問題,將我的文件路徑設置爲服務帳戶憑據的json文件。我將該文件的名稱更改爲Secret.json,這會影響任何內容嗎? 我不明白爲什麼一串「/Files/Secret.json」不會工作 – user2920648