Google API 和 OAuth 2.0 的正确重定向 URI
Posted
技术标签:
【中文标题】Google API 和 OAuth 2.0 的正确重定向 URI【英文标题】:Correct redirect URI for Google API and OAuth 2.0 【发布时间】:2012-07-05 01:34:55 【问题描述】:我正在使用 Google Maps API 制作应用程序。我希望能够让一个人在电脑上,观看另一个人在地图上编辑的内容。我正在考虑将地图信息传递给 Google Fusion Table。其他人将能够将所有内容视为一个图层。我希望程序只在用户的浏览器中运行,而不是为它建立网站。
要编辑融合表,我需要获得访问权/令牌。我目前正在尝试使用这些 javascript 来完成此操作。 ScriptSample.html、oauthWindow.html 和 gwt-oauth2.js。这是working example。
当我运行它们时,我收到一条错误消息,指出 redirect URI 不正确。它说我用来重定向的文件没有权限。我的第一个明显问题是:
如何授予该文件重定向权限?
在我的 API 控制台中,我将其设置为客户端 Web 应用程序。我应该将其更改为已安装的应用程序吗?
目前我有以下设置:
我的 JavaScript 来源是:https://localhost
重定向 URI:https://localhost/oauthWindow.html
谢谢
【问题讨论】:
您是否认真使用基于 localhost 的回调 URI?这意味着OAuth服务器应该将响应发送给自己,这是没有意义的。您绝对应该使用一些可从外部网络访问的 URL。 对不起,我错了,我必须纠正自己。回调 URI 仅用于使用授权结果重定向浏览器,因此基于 localhost 的回调 URI 理论上可以工作。另一方面,它存在严重的安全问题,使得整个回调 URI 检查方法毫无意义。因此,您仍然应该提供一个外部可访问的回调。 我也有这个问题。由于某些超级奇怪的原因,谷歌决定将我的重定向网址https://something
转换为http://something
。这太可怕了,因为我的服务器对 ssl/https 有严格的要求,没有例外。
@ZólyomiIstván 重定向到 localhost 是 google 建议为已安装应用程序设置 OAuth 流程的方式。在谷歌自己的 Python OAuth2 库中,这就是他们在 tools.py 模块中实现“flow_from_client_secrets()”方法的方式。
这里似乎有很多误解。使用环回 127.0.0.1 地址是使用 OAuth 集成的桌面应用程序的常见做法。显然,OAuth 后端服务器不会与此 IP 地址通信,但 Web 浏览器会使用客户端脚本。这意味着,在计算机上,有人运行一个桌面应用程序,该应用程序启动一个指向 some-oauth-login-page?redirect_uri=http://127.0.0.1:4444 之类的 Web 浏览器。这将显示用于登录的 UI,登录后,浏览器将重定向到 127.0.0.1:4444 并传递激活码或类似信息。
【参考方案1】:
在开发工作中使用 localhost url 没有问题 - 显然它需要在生产时进行更改。
你需要去这里: https://developers.google.com/accounts/docs/OAuth2 然后点击 API 控制台的链接 - 基本步骤部分中的链接。填写新申请表后,系统会要求您提供重定向网址。输入您在获得访问权限后要访问的页面。
在形成 Google oAuth 网址时 - 您需要包含重定向网址 - 它必须完全匹配,否则您会遇到问题。它还需要进行 UrlEncoded。
【讨论】:
因此,如果我想在本地托管的页面上重定向,比如说 - localhost:9090/index.html,我应该给出这个确切的 url 吗? 那为什么我需要添加http://localhost:8080/oauth2/callback/google
而我想去http://localhost:3000/home
那么在spring boot application.yml 文件中redirectUri:.....
是什么
你为什么不使用环回地址作为产品?这里似乎有些误会。使用 Google OAuth 的桌面应用程序通常会在端口上设置 HTTP 侦听器,然后在 Web 浏览器中调用 Google 的 OAuth 网页,并等待在本地 HTTP 侦听器上调用重定向 URI。这在 prod 中效果很好,并且是 Google 推荐的。以上是关于Google API 和 OAuth 2.0 的正确重定向 URI的主要内容,如果未能解决你的问题,请参考以下文章
Google API 和 OAuth 2.0 的正确重定向 URI
通过 OAuth 2.0 和私钥(即服务帐户)访问 Google Contacts Api
通过 OAuth 2.0 自动使用 google-api-dotnet-client
带有 Google Analytics API v3 的 OAuth 2.0