使用.NET中的Google.Apis.Analytics.v3庫,我做一個的OAuth2認證的谷歌Analytics(分析)API,像這樣:Google API:如何檢查認證是否成功完成?
string[] scopes = new string[] { AnalyticsService.Scope.Analytics, // view and manage your analytics data
AnalyticsService.Scope.AnalyticsEdit, // edit management actives
AnalyticsService.Scope.AnalyticsManageUsers, // manage users
AnalyticsService.Scope.AnalyticsReadonly}; // View analytics data
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
, scopes
, userName
, CancellationToken.None
, new DatabaseDataStore("Analytics")).Result;
AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Masterpiece"
});
這樣做的問題是,在年底,我不不知道驗證是否成功,因爲我沒有看到從這個實現中獲取任何消息的方法。通常情況下,這工作得很好,我可以繼續詢問API。但是,如果我撤消爲此用戶名存儲的令牌,那麼此實現不會告訴我該服務未經過身份驗證,並且當我嘗試詢問API後,我收到錯誤消息。
在開始訪問API方法之前,我應該如何驗證身份驗證是否成功完成?如果身份驗證失敗,我希望能夠從我的數據存儲中刪除撤銷令牌,然後再次嘗試身份驗證,請求用戶權限。
您好,感謝您的解釋。但是,我的情況稍有不同。我其實有一個try/catch,當用戶點擊取消時,它會處理這種情況。但是在我描述的場景中,用戶已經在過去的某個時間進行了身份驗證,現在管理員撤銷了其中一個令牌,但不會從數據庫中刪除它們。當網站嘗試再次連接到GA時,它將使用它在數據庫中找到的吊銷標記。 credential.Token只返回與我最初發送的相同的已吊銷標記,並且不會引發錯誤。 HTTP://截屏。com/t/Eum96s3chP – SsjCosty
你的databasedatastore應該處理管理員沒有完全刪除刷新令牌 – DaImTo
正確...但數據存儲如何知道令牌已被撤銷?您可以通過調用URL(https://accounts.google.com/o/oauth2/revoke?token={token})來撤消令牌,但數據存儲將如何檢查令牌是否已被撤銷? – SsjCosty