我将为您翻译以下关于 IT 技术的内容,它涉及 OAuth2 以及 Azure 托管的 Web 应用程序。在这里有许多解决方案可供使用,但它们都采用了服务帐户/证书,而我需要用户通过 Google 进行身份验证和授权。
在本地运行正常,但在部署为Azure Web应用程序时出现以下异常:
我猜 GoogleWebAuthorizationBroker.AuthorizeAsync 正试图建立一个 http 监听器,而这在 Azure web 应用程序中不可能(?)。
我尝试使用 Azure web 应用程序身份验证。这确实对用户进行了身份验证,但是我该如何检索经过身份验证的用户以便将其授权给 Google?
顺便说一下:因为我需要 GA 实时数据,所以我被困在 GA Reporting v3 库中。
代码:
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = _clientId, ClientSecret = _clientSecret },
scopes,
User.Identity.Name,
CancellationToken.None,
new FileDataStore("GA.Auth.Store")) /* tried this to be null as well */
.Result;
var service = new AnalyticsService(
new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Analytics API Sample"
});
在本地运行正常,但在部署为Azure Web应用程序时出现以下异常:
[HttpListenerException (0x5): Access is denied]
Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +82
Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task) +76
Google.Apis.Auth.OAuth2.<AuthorizeAsync>d__1.MoveNext() +233
我猜 GoogleWebAuthorizationBroker.AuthorizeAsync 正试图建立一个 http 监听器,而这在 Azure web 应用程序中不可能(?)。
我尝试使用 Azure web 应用程序身份验证。这确实对用户进行了身份验证,但是我该如何检索经过身份验证的用户以便将其授权给 Google?
顺便说一下:因为我需要 GA 实时数据,所以我被困在 GA Reporting v3 库中。