【发布时间】:2017-08-30 05:34:35
【问题描述】:
我正在使用 oauth2 谷歌驱动 API 从 Java 中的谷歌表中读取数据。 我的本地机器上有一个工作示例。但是当我在远程服务器上部署它时,在身份验证时,API 返回一个要在浏览器中打开的 URL。 网址如下:
https://accounts.google.com/o/oauth2/auth?access_type=online&approval_prompt=auto&client_id=my.client.id&redirect_uri=http://**localhost:58305**/Callback&response_type=code&scope=https://www.googleapis.com/auth/drive
由于没有本地主机,因此该 URL 显然不会在远程服务器上打开。
生成 oauth 客户端 ID 时我的 google 开发人员控制台配置:
应用程序类型:Web 应用程序或其他
授权的 JavaScript 来源:我的远程服务器来源
授权重定向 URI:我的远程服务器页面
当应用程序类型为其他时,身份验证在我的本地计算机上成功完成。 由于身份验证 URL 中的 localhost 字符串,在远程服务器上部署时相同。
另一方面,当应用程序类型为 Web 应用程序 时,它会在本地主机和远程服务器上给我一个错误页面,即使我在上述选项中添加了正确的来源,也会出现如下错误:
Error: redirect_uri_mismatch
The redirect URI in the request, http://localhost:59363/Callback, does not match the ones authorized for the OAuth client. Visit https://console.developers.google.com/apis/credentials/oauthclient/my.client.id?project=my.project.id to update the authorized redirect URIs.
我尝试了使用重定向 URI 的多个选项。但它给出了同样的错误。
- 身份验证中是否有任何设置可以更改 修复 localhost:59363 部分?
- 应用程序类型:Web 应用程序在我必须这样做时是否正确 在生产服务器上将其部署为 application type : other 是 对于已安装的应用?
【问题讨论】:
-
我刚刚发布了一个关于这个主题的问题:“Code Servlet to Read/Write Google Sheets Data”stackoverflow.com/questions/49604035/…。您介意谈谈您是如何实施您的解决方案的吗?
-
我在使用 google drive api 时遇到了同样的问题。使用应用程序类型在 localhost 上一切正常:其他。当在 iis 上发布时给出“错误:redirect_uri_mismatch”。当我使用应用程序类型时:web 应用程序在本地也给出“错误:redirect_uri_mismatch”。尝试了许多带有重定向 uri 的选项,但仍然没有运气。正在寻找上周的解决方案。有人能告诉我们应该提供什么重定向 uri 吗?目前我使用localhost:62283 作为我的网址。
标签: java google-api google-drive-api google-oauth google-api-java-client