如何在没有带外 (OOB) 的情况下使用 Google OAuth2.0

How to use Google OAuth2.0 without out-of-band (OOB)

我创建了新的 OAuth 2.0 客户端 ID(应用程序类型 = 桌面应用程序)。然后下载了 OAuth 客户端 JSON 文件。将文件放入我的代码所在的文件夹中。当我 运行 在我的 PC 上本地代码时,它会尝试打开 URL:

https://accounts.google.com/o/oauth2/auth?client_id={my_client_id}&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope={my_scope}&access_type=offline&response_type=code

这就是我所期望的。由于下载的OAuth客户端有参数"redirect_uris":["http://localhost"]。因此,当我 运行 在 ubuntu 服务器上使用相同的代码时,我期待着同样的事情,但是没有。它建议我访问的 URL 是

https://accounts.google.com/o/oauth2/auth?client_id={my_client_id}&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope={my_scope}&access_type=offline&response_type=code

这就是问题所在,我不明白我必须做什么才能使我的服务器通过此授权。 在访问目的地之前,我已经尝试手动更改 redirect_uris 的此参数到我在本地计算机上的相同参数 - http%3A%2F%2Flocalhost%3A8080%2F, 但我在浏览器中收到此错误:

谁能帮帮我?我该怎么办?

使用已安装应用程序的开发人员需要拼接使用 IP 流。

Loopback IP address (macOS, Linux, Windows desktop)

该页面上的一个关键点是

To receive the authorization code using this URL, your application must be listening on the local web server.

因此,按照指示,您可以使用 http://127.0.0.1:port or http://[::1]:port 事实上,您得到一个未找到的页面是按预期工作的,因为您只是没有按照文档中的指示设置本地 Web 服务器。

授权需要的授权码在URL浏览器中仍然可以找到。目前这是我们从 Google 获得的唯一信息,没有其他解决方案。