【问题标题】:Access file and folder from Google drive from web application从 Web 应用程序访问 Google 驱动器中的文件和文件夹
【发布时间】:2023-03-13 22:10:01
【问题描述】:

我正在尝试创建一个 ASP.NET MVC Web 应用程序来访问 Google 驱动器文件。

到目前为止我已经创建了什么:

  1. 从 Google 开发者控制台启用我的 API。
  2. 为提供“OAuth 2.0 客户端 ID”的 Web 应用程序创建了一个项目及其凭据。
  3. 我已将其粘贴到我的 Web 应用程序中。

如果我创建一个控制台应用程序,它可以正常工作,但不能在 Web 应用程序中。 我收到身份验证错误。

我已关注this link,但如果您仔细查看,您会发现它有 client_secret.json,它仅适用于已安装的应用程序(桌面应用程序)。

身份验证错误类似于this attached screenshot

【问题讨论】:

  • 您是否阅读了链接底部的 5 cmets?该代码使用 HTTPS(安全),因此存在可能失败的 TLS 身份验证。使用像 wireshark 或 fiddler 这样的嗅探器并检查正在使用的 TLS 版本。 TLS 1.0/1.1 不再有效,您必须使用 TLS 1.2/1.3。我怀疑链接上仅适用于 localhost 的命令可能是由于 TLS 版本错误。
  • 谢谢@jdweng,但我也使用 https://localhost 创建了应用程序,但错误仍然相同。

标签: c# asp.net-mvc google-drive-api google-authentication


【解决方案1】:

回答

根据Google Drive API documentation for .NET,400 错误是由于在这种情况下缺少参数 redirect_uri。您必须确保您的 credentials.json 具有以下格式:

{
  "installed": {
    "client_id": "xxxx.apps.googleusercontent.com",
    "project_id": "quickstart-xxxx",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "xxxx",
    "redirect_uris": [
      "urn:ietf:wg:oauth:2.0:oob",
      "https://example.com"
    ],
    "javascript_origins": [
      "https://example.com"
    ]
  }
}

"urn:ietf:wg:oauth:2.0:oob" 是您告诉 OAuth 服务器您希望代码在同一页面中的方式。我强烈建议您搜索 Google 官方文档。有关访问 Google API 的更多信息,请查看Google OAuth Documentation

参考

Google Drive API documentation

OAuth 2.0 to Access Google APIs

【讨论】:

  • @josh-vasquez credentials.json 您指的是已安装的应用程序,例如控制台或桌面应用程序。它适用于此 ** 但不适用于 ** 对于 Web 应用程序或实时服务器。
  • 如果你包括了我提到的那一行,它必须。当您第一次运行您的网络应用程序或控制台应用程序时,您必须在您的 API 项目中选择这些(桌面应用程序、网络浏览器、Android 应用程序等),然后下载 credentials.json 并确保它有 urn:ietf:wg:oauth:2.0:oob 行如果您不想通过 redirect_uris http://example.com?code=CODE 获取代码。无论如何,一旦您将代码复制/粘贴到您的控制台(您第一次运行您的应用程序的地方),它将生成一个token.json,这是每次您的应用程序想要访问所需的 API 时使用的令牌。
猜你喜欢
  • 2013-05-02
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2013-07-11
相关资源
最近更新 更多