【问题标题】:Youtube Data Api Search Endpoint 401 ErrorYoutube 数据 API 搜索端点 401 错误
【发布时间】:2021-04-08 16:29:35
【问题描述】:

我正在尝试使用 Youtube 搜索 endpoint,这似乎不需要 OAuth 令牌。我已经阅读了一些教程,它们只传递了一个 API 密钥。我在 Chrome 开发工具的控制台中收到“加载资源失败:服务器响应状态为 401 ()”错误。具体来说,查看“网络”选项卡,我得到以下信息:

我注意到它说有一个error: "invalid_token",但我传递了 api 密钥,所以他们一定在谈论 OAuth 令牌?我很困惑,因为它不应该需要一个,特别是因为我只是在查询公共数据。甚至端点文档的Try This API 部分也不需要。最重要的是,我在 Postman 中的调用有效,只需将端点粘贴到浏览器中即可。为什么它不起作用?这是使用来自 ReactJS 前端的 axios 调用。

const apiKey = 'MY_API_KEY';
const url = 'https://www.googleapis.com/youtube/v3/search';

const response = await axios.get(url, {
  params: {
    part: 'snippet',
    maxResults: 5,
    q: songName,
    key: apiKey
  }
});

【问题讨论】:

    标签: google-api youtube-api google-oauth youtube-data-api


    【解决方案1】:

    发生的事情是我在其他 API 的其他调用中使用了 axios.defaults.headers.common['Authorization'] =Bearer ${params.access_token};。这会导致默认所有内容都具有此访问令牌!所以我现在做的是 delete axios.defaults.headers.common["Authorization"];——解决方案很明显,只要确保你没有额外的标题,因为搜索不是 OAuth 端点!

    【讨论】:

    • 抱歉介入,但您的声明(引用)Search is not a OAuth endpoint 不正确。当这些凭据有效(即access token has not expired)时,可以使用 OAuth 凭据(即使用访问令牌)访问任何 YouTube 数据 API。
    • 为了让自己相信我上述声明的真实性,请在bash 命令行提示符下发出以下命令:wget -qO- --content-on-error --header="Authorization: Bearer $ACCESS_TOKEN" "https://www.googleapis.com/youtube/v3/search/?part=snippet&maxResults=1&q=Control%20me%20Colde"。您将获得一个有效的JSON response,其中仅包含一个项目(我的是一个 ID 为 Rf-ctwR7P-M 的视频)。请注意,环境变量 $ACCESS_TOKEN 必须设置为有效(未过期)的访问令牌。
    • 另请注意,访问令牌 $ACCESS_TOKEN(传递到 Search.list 端点)必须绑定到启用了 YouTube 数据 API 的 Google 项目(通过 Google 的开发者控制台创建)。
    猜你喜欢
    • 2016-03-18
    • 2017-08-11
    • 2019-08-13
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-08-16
    相关资源
    最近更新 更多