【问题标题】:Youtube API key - accessNotConfigured errorYoutube API 密钥 - accessNotConfigured 错误
【发布时间】:2013-06-28 20:54:28
【问题描述】:

我在 YouTube 上为 Android 应用注册了我的应用,并获得了一个 API 密钥。然后我尝试通过我的浏览器进行 api 调用,尝试如下:

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&mine=true&key=my_api_key

我得到了这个错误:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured"
   }
  ],
  "code": 403,
  "message": "Access Not Configured"
 }
}

但我确实配置了我的帐户并将服务设置为使用 YouTube Data API v3 知道我还需要做什么吗?

编辑:创建 clientId 并启用所有需要的服务后,我得到了以下响应:

{
 "error": {
  "errors": [
   {
    "domain": "youtube.parameter",
    "reason": "authorizationRequired",
    "message": "Unauthorized",
    "locationType": "parameter",
    "location": "mine"
   }
  ],
  "code": 401,
  "message": "Unauthorized"
 }
}

到我粘贴到浏览器中的这个网址:

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&mine=true&key=key_for_server_apps

与我在浏览器中输入此网址时的结果相同

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&mine=true&key=key_for_browser_apps

谢谢, 亚历克斯

【问题讨论】:

    标签: youtube youtube-api android-youtube-api youtube-data-api


    【解决方案1】:

    API 密钥是简单的 API 密钥,还是 OAuth 2.0 访问令牌?该 API 调用需要 OAuth 2.0 授权才能工作。

    我们最近 published a video playlist 解释了如何注册一个简单的密钥和一个客户端 ID/客户端密码运行一些示例。

    你需要做的是:

    1. 注册客户端 ID/客户端密码
    2. 通过三足 OAuth 2.0 授权流程并获取访问令牌
    3. 使用该访问令牌进行 API 调用

    我们将在某个时候发布一段关于使用OAuth Playground 生成访问令牌的视频。

    【讨论】:

    • @lkai Lan 比你的视频制作得非常好。我使用它们来获取 cliendId 并启用不同的所需服务。但我仍然收到未经授权或未配置的错误。我扩展了我的原始问题以显示网址和错误。知道我可能做错了什么吗?
    【解决方案2】:

    要使用 Mine=true,您需要拥有 Oauth2 令牌以及用于获取用户数据。

    这是一个你可以使用的链接,只要你打开右上角的身份验证,你就可以浏览它

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list?part=contentDetails&mine=true&_h=1&

    【讨论】:

    • 我不应该使用 mine=true 吗?此外,我试图拉的 YouTube 频道实际上不是我的。这是一个受欢迎的 YouTube 节目。我怎么能这样做?
    【解决方案3】:
    1. 您确定要在应用程序中执行 OAuth2 流程并获取 OAuth2 密钥吗?
    2. 同样在开发控制台的“服务”下,您是否启用了 YouTube Data API v3?

    【讨论】:

    【解决方案4】:

    根据原发帖者对其他答案的 cmet 综合几个不同的东西:

    另外,我要拉的 YouTube 频道实际上并不是我的。它 是一个受欢迎的 YouTube 节目。我怎么能这样做?

    您要进行的 API 调用是 youtube.channels.list(),您可以传入两个参数之一来检索任意频道的频道信息。 (您不想使用mine=true,因为您说您不想检索自己的频道。)

    • 如果您知道 YouTube 频道的旧用户名,则可以使用 forUsername="LEGACY_USERNAME",例如“GoogleDevelopers”或“LadyGagaVEVO”。
    • 如果您碰巧知道频道的 ID(通常以“UC”开头),则可以使用 id="UC..."

    您还需要为part= 参数添加一个值。 part="snippet" 通常就足够了。您不必为此类 API 调用执行 OAuth 2 流程,您只需提供启用了 YouTube 数据 API v3 的有效 API 密钥即可。 Ikai 发布链接的视频系列是注册该 API 密钥的一个很好的指南。

    这是一个使用交互式 API Explorer 调用 youtube.channels.list(part="snippet", forUsername="GoogleDevelopers") 的工作示例:

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list?part=snippet&forUsername=GoogleDevelopers

    对应如下网址:https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=GoogleDevelopers&key={YOUR_API_KEY}

    由于您询问的是 Android 应用程序,因此最好使用 Java 客户端库来发出请求,而不是请求原始 URL。 sample code on this page 应该可以帮助您入门。

    【讨论】:

      【解决方案5】:

      我解决了这个问题,因为我错过了Google Console Dashboard 上的配置。

      如果您使用 google api v3,这是解决该问题的简单方法,您只需通过 Google Console Dashboard 启用youtube apihttps://console.developers.google.com

      【讨论】:

        猜你喜欢
        • 2019-12-13
        • 2020-01-07
        • 2013-08-14
        • 2014-04-30
        • 2015-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 2017-01-25
        相关资源
        最近更新 更多