0

尝试使用 Google Blogger API v3.0

建立一个测试博客 - https://msi-blogger-api-test.blogspot.com/

Blogger 用户 ID 是 - 11970463155418365784 显示在 - https://www.blogger.com/profile/11970463155418365784

为该项目设置“API 密钥”和“OAuth 2.0 令牌” - 来自 console.cloud.google.com 的屏幕截图

在 Blogger 沙盒中完美运行 - Blogger沙盒截图

从 Blogger 沙盒复制 cURL。

通过“复制”按钮(如屏幕截图中突出显示的那样)从 console.cloud.google.com(上面的屏幕截图)复制“API 密钥”和“OAuth 2.0 令牌”。

通过 cURL 从 CLI 尝试,仅在使用“API 密钥”时有效 - 来自 CLI 的屏幕截图

通过 cURL 从 CLI 尝试,在使用“API 密钥”和“OAuth 2.0 令牌”时不起作用 - 来自 CLI 的屏幕截图

尝试通过以下两种方式使用“OAuth 2.0 令牌”:

  1. 1008747252329-g8j8...ebb.apps.googleusercontent.com
  2. 1008747252329-g8j8...落潮

认为可能不需要“.apps.googleusercontent.com”后缀。

这没有任何区别。

那么,我错过了什么?为什么“API 密钥”有效但“OAuth 2.0 令牌”无效?

是的,我不需要在这个(API“get”)示例中为 cURL 使用“OAuth 2.0 令牌”,但它仍然可以工作。

当我尝试不同的 API 时,比如说“listByUser”,它需要“OAuth 2.0 令牌”——它不起作用,我得到了同样的错误。

4

1 回答 1

1

那么,我错过了什么?为什么“API 密钥”有效但“OAuth 2.0 令牌”无效?

直接回答你的问题。API 密钥仅适用于公共数据,您没有发送有效的访问令牌作为 OAuth 2 不记名令牌,您发送的值是错误的。

API 密钥

首先,API 密钥只会让您访问公共数据,因此您可以使用 API 密钥列出 YouTube 上的公共视频,或查看 Google 日历上的公共假期日历之一。您不能使用 API 密钥访问私人用户数据

要访问私有用户数据或任何需要授权的方法,您需要提供授权标头并提交有效的不记名令牌。

“OAuth 2.0 令牌”

您的问题是您没有提交有效的访问令牌。看起来您可能正在尝试从 Google 云控制台上的项目发送客户端 ID。这不是访问令牌。

如何使用 curl 获取访问令牌。

如何使用 CURL 获取访问令牌是一个三步过程,第一步是请求拥有数据的用户的授权

这是一个 HTTP get 调用,可以放置在任何浏览器窗口中。

GET https://accounts.google.com/o/oauth2/v2/auth?client_id=XXXX.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/userinfo.profile&response_type=code

我有一个教程How to get a Google access token with CURL。和一个视频

于 2021-05-16T16:32:22.450 回答