从Youtube API v.2迁移到v.3 - 非常简单的应用程序

时间:2015-05-07 21:06:53

标签: php youtube-api

我使用Youtube API v.2来检索上传列表。 名单位于: https://gdata.youtube.com/feeds/api/users/blablabla/uploads?v=2&max-results=10&alt=json。我每天检查它并自动将新视频发布到我的博客。

它是如此辉煌和如此简单,以至于我将在接下来的一百年里使用它。但它不再起作用了。

使用新API修复此问题的最简单方法是什么?

这是我在发布这个问题之前尝试做的事情:

  • 在Google开发者控制台中注册了新应用,打开了youtube api。
  • 在凭据标签中创建了OAUTH服务帐户,获得了ClientId和P12密钥。
  • 已下载google-api-php-client。
  • 编写了这段代码:

    $client_id = "blablabla.apps.googleusercontent.com";
    $client = new Google_Client();
    $client->setApplicationName("Youtube Exporter");
    $key = file_get_contents("key.p12");
    
    $cred = new Google_Auth_AssertionCredentials($client_id,
        "https://www.googleapis.com/auth/youtube",
        $key);
    $client->setAssertionCredentials($cred);
    $client->getAuth()->refreshTokenWithAssertion($cred);
    
    $service = new Google_Service_Youtube($client);
    
  • 代码抛出invalid_grant异常,我不确定它是关于常见的auth或youtube服务。

1 个答案:

答案 0 :(得分:2)

您不需要客户端ID或P12密钥;相反,您只需要“公共API访问”部分下的“浏览器应用程序密钥”。它只是一个键(不是一对),一旦你拥有它,你可以做到以下几点:

1)您需要获取频道ID(与您的用户名不同)。这是一个以UC开头的长字符串。如果找不到,可以发送快速请求:

https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername={YOUR_USERNAME}&key={YOUR_API_KEY}

生成的json数据包将包含您的频道ID。

使用密钥和渠道ID,您可以非常轻松地获取上传列表,而无需使用您正在尝试的任何PHP代码...如果您需要对ohers进行身份验证,PHP客户端将非常有用做上传等事情。但对于公开可读的数据,您只需发送请求:

https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId={YOUR_CHANNEL_ID}&maxResults=10&key={YOUR_API_KEY}