如何在不使用 "Log in with Google" 的情况下获得我自己的 Google API 访问令牌?

How to get my own Google API access token without using "Log in with Google"?

在我的网站上,我希望能够检索我自己的 YouTube 帐户是否上线。环顾四周,我发现了这个端点:

GET https://www.googleapis.com/youtube/v3/liveBroadcasts,

这将帮助我做到这一点。但是,我发现的主要问题是它需要一个 OAuth2 令牌,而我能找到的生成一个令牌的唯一方法是通过整个 Login with Google 方法。

我的主要问题是我希望任何访问我网站的人能够看到我是否在线。我不是在寻找解决方法或使用网络爬虫 - 我希望能够使用这个特定的端点。这可能吗?

换句话说,是否可以手动获取我自己的访问令牌,并将其插入 API 请求以直接访问端点?或者这是不可能的?

听起来不错:

  1. 使用您自己的 google 帐户完成流程(一次),
  2. 缓存令牌服务器端,并且
  3. 在为您的页面提供服务时包含 API 的响应。

陷阱:

  1. OAuth 令牌的有效期是多长时间? (如果发生这种情况,API 将开始返回错误)
  2. 页面生成的频率与 API 的速率限制是多少? (您可能必须每隔几分钟请求一次状态 最多 一次,并缓存响应)

关于 YouTube 数据 API 的第一件事是:为了向它发出授权请求,不能通过浏览器减轻身份验证。

您可以阅读文档 OAuth 2.0 Flow: Installed apps 以获取有关独立计算机上授权流程的完整信息。

文档指定了第 4 步 -- Handle response from Google -- and step 5 -- Exchange authorization code for refresh and access tokens。通过初始 OAuth 流程,您将获得两个令牌:一个短期访问令牌和一个按需生成访问令牌的刷新令牌。 无法在没有浏览器的情况下进行身份验证,但一旦拥有刷新令牌,就可以通过编程方式将其交易为访问令牌:

  1. 初始化:通过浏览器认证获取刷新令牌;

  2. 迭代:根据需要多次查询 API 访问令牌——无需任何浏览器交互! -- 使用 (1) 中的刷新令牌,然后进一步调用目标 API 端点(同样,没有任何浏览器交互)。

请注意,步骤 (1) 和 (2) 可以很好地分开,以便 (1) 由将刷新令牌存储到文件中的独立(本地)计算机执行;稍后,在另一台远程计算机(例如未安装浏览器的服务器)上安全传输该文件后,根据需要在该远程计算机上重复执行 (2) (参见 Using OAuth 2.0 for server-side, standalone scripts。)