gpt4 book ai didi

php - YouTube API v3 每次都不断请求授权

转载 作者:行者123 更新时间:2023-12-04 20:41:25 29 4
gpt4 key购买 nike

我正在使用 YouTube api v3 来检索使用示例的视频列表 https://developers.google.com/youtube/v3/code_samples/php#retrieve_my_uploads

我打开页面,应用程序要求授权。我点击授权链接,选择我的 gmail 帐户,然后我得到了列表。

问题是当我在几秒钟后回到应用程序时,我必须再次授权应用程序。

我认为一旦应用程序获得授权,您就可以将 token 交换为刷新 token 。

是否有任何地方显示一些代码如何获取刷新 token ,因为文档或在线对其的任何引用都非常糟糕。

我真的需要一些帮助才能让它工作,因为过去几周我一直在努力,但一无所获。

最佳答案

我有一个冗长的答案,但它应该是一个很大的帮助。我对糟糕的文档有同样的问题,我也在尝试从我的项目的播放列表中获取视频列表。在过去几天的挣扎之后,API v3 刚刚神奇地开始为我工作,这就是我所做的。

首先是实际获取 API key 。我确定您现在已经在 Google Developers Console 中了,但以防万一,这里是这一步的操作:

  • 在 Google Developers Console 中创建项目
  • 启用 YouTube 数据 API v3 API
  • 在“凭据”下,如果您遇到与我相同的问题,您可以创建新的客户端 ID,但不能创建 API key 。

  • 这是一个主要问题,因为您需要一个 API key 来在未经授权的情况下发出简单的数据请求,例如,从播放列表中获取视频列表。要获取 API key ,请返回“API”部分,单击“YouTube Data API v3”,这是带有从不加载任何内容的加载指示器的屏幕。但是,您可以在此处单击“配额”,它会将您带到旧版本的开发人员控制台。

    从这个旧版本,您可以转到“API 访问”并添加您的 简单的 API 访问 key (API key 适用于这个旧版本,但不适用于开发者控制台的新版本)。我对此可能有误,但我认为“创建新的服务器 key ...”适用于 PHP 等服务器端语言,而“创建新的浏览器 key ...”适用于 Javascript 等客户端语言。还有用于 Android 和 iOS 键的按钮,但我认为您不需要这些按钮。无论如何,我在 PHP 中使用 cURL 并且 Server 键对我有用,当我的项目仍在开发中时,我将它设置为允许任何引用。

    一旦您收到 服务器应用程序的 key 简单的 API 访问 ,使用该 key 的任何请求可能需要一段时间才能真正起作用。对我来说,我的脚本在大约 4-5 小时内没有工作(我认为谷歌这周的服务器确实存在问题,这也是我不得不“欺骗”它给我一个 API key 的原因。这可能是为什么“凭据”页面不加载任何内容)。

    现在使用 https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.playlists.list 上的工具帮助创建您的 GET 请求。在 中输入“代码段”零件 字段和整数 最大结果 如有必要。然后从 Youtube 上的 URL 获取播放列表的 ID。比如柯南的《Clueless Gamer》系列就是 https://www.youtube.com/playlist?list=PLVL8S3lUHf0RqD7TZ6hohWk8Sd3asaqnY ,所以 ID 是 PLVL8S3lUHf0RqD7TZ6hohWk8Sd3asaqnY .然后点击 执行 .

    现在它会给你 GET 请求,比如
    GET https://www.googleapis.com/youtube/v3/playlists?part=snippet&id=PLVL8S3lUHf0RqD7TZ6hohWk8Sd3asaqnY&maxResults=20&key={YOUR_API_KEY}

    X-JavaScript-User-Agent: Google APIs Explorer

    只需获取单词 GET 后的 URL 并将 {YOUR_API_KEY} 替换为您的 API key 。

    现在你可以在 cURL 请求中使用这个 URL,就像这样,其中 $request_url 是上面包含您的 API key 的 URL:
    //http://codular.com/curl-with-php
    // Get cURL resource
    $curl = curl_init();
    // Set some options - we are passing in a useragent too here
    curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $request_url,
    CURLOPT_USERAGENT => 'Codular Sample cURL Request'
    ));
    // Send the request & save response to $resp
    $resp = curl_exec($curl);
    // Close request to clear up some resources
    curl_close($curl);

    现在 $resp 将保存一个 JSON 字符串,您可以通过该字符串解析并获取该播放列表视频的数据。我会将 JSON 解析留给您,但这就是您获取类似于旧 的数据的方式。 gdata 在 v2 中的方式。并且没有身份验证:)

    它可能会报告您的 API key 未经授权的错误,在这种情况下,您需要等待几个小时。同样,我认为谷歌最近遇到了真正的服务器问题,所以请耐心等待;不是您的脚本不起作用,而是 Google ;)

    我会注意到
    $resp = file_get_contents($request_url);

    似乎也有效,但老实说,我不知道 cURL 和 file_get_contents() 之间哪种方法“更好”。

    关于php - YouTube API v3 每次都不断请求授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786842/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com