在弃用 OAuth 带外 (oob) 流程后,如何将 curl 脚本授权给 Google Oauth?

How to authorize a curl script to Google Oauth after OAuth out-of-band (oob) flow is deprecated?

我有一个 curl 脚本 GoogleAuthenticationCurl.sh,我已经使用了大约十年来从 Google 不同的 Google API 请求信息。

此脚本用户安装了应用程序凭据以构建 Googles oauth 服务器的同意屏幕。我复制 link 并显示同意屏幕。

# Authorization link.  Place this in a browser and copy the code that is returned after you accept the scopes.
https://accounts.google.com/o/oauth2/auth?client_id=[Application Client Id]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=[Scopes]&response_type=code

Google 最近进行了一项更改,弃用了 urn:ietf:wg:oauth:2.0:oob 的重定向 uri。 (#instructions-oob)

如果我使用我以前使用的link,我会得到以下结果

Google 希望我们使用 redirect_uri=http://127.0.0.1:port or http://[::1]:port">http://[::1]:port 而不是 urn:ietf:wg:oauth:2.0:oob

所以我将 link 更改为以下内容并将其放在网络浏览器中

https://accounts.google.com/o/oauth2/auth?client_id=[ClientId]&redirect_uri=http://127.0.0.1b&scope=profile&response_type=code

一开始一切顺利我能够再次看到同意屏幕并同意授权。但是我没有得到返回的授权码

这是因为我不是 运行 网页,我只是想授权一个 curl 脚本。

是否可以让我的 curl 脚本响应此请求,或者 google 现在完全删除授权 curl 脚本的能力?

弃用

Google 已弃用 OOB 流,因此自 2022 年 2 月 28 日起删除了重定向 URL urn:ietf:wg:oauth:2.0:oob。对于无法侦听HTTP 端口。

迁移

您需要迁移到另一个流程。这并不一定意味着您不能使用 curl。但是不知何故,您需要能够使用必要的代码接收重定向调用。

可能的修复

  • 使用重定向 URL http://127.0.0.1,注意最后删除的 b
  • 同意屏幕后,检查 URL,您可能会在那里找到代码 http://127.0.0.1/?code=COPY_THIS_CODE
  • 运行 请求授权代码的 curl 调用。

后记

Postman 可能很有趣。