【发布时间】:2017-12-18 22:29:43
【问题描述】:
我的网站使用谷歌驱动 API 时遇到问题,该 API 仅影响我们拥有它的测试服务器,但不影响我正在测试它的本地主机。正如您可以想象的那样,这使得故障排除变得困难。在程序运行时写入文本文件后,我设法找到了导致问题的确切语句:
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
null).Result;
这让我相信该错误与权限/授权有关。我的本地主机和测试站点权限在 google api 控制台上完全相同,这就是我从中获取客户端机密的地方。
https://i.imgur.com/fJDAWWz.png
44354 以上是我的本地主机,涂黑的 http(不是 https)url 是我们的测试服务器。 如您所见,来源和重定向 uri 完全相同,所以我无法弄清楚为什么它会在一个而不是另一个上起作用。
这是语句流来自:
var stream = new FileStream(System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/client_secret.json"), FileMode.Open, FileAccess.Read)
编辑:我刚刚意识到测试服务器实际上是 http 地址,而不是 https 地址。这可能是为什么? google API 调用不能通过 http 工作吗?
【问题讨论】:
-
(基本上,
GoogleWebAuthorizationBroken不是您要查找的类。您应该使用 nuget.org/packages/Google.Apis.Auth.Mvc 包。 -
我说 - 你想要 Google.Apis.Auth.Mvc
-
(假设您想以用户身份而不是使用服务凭据进行身份验证。)
-
嗯,这不一样,不 - 因为在本地启动浏览器和远程向用户提供登录页面之间显然存在差异。
标签: c# asp.net-mvc google-api google-oauth google-api-dotnet-client