如何使用youtube api获取用户所有订阅频道的列表?

时间:2017-04-03 06:06:25

标签: youtube-api laravel-5.4 google-apis-explorer

我正在使用Laravel-php,我有以下代码:

$client = new Google_Client();
        $client->setClientId(env('GOOGLE_ID'));
        $client->setClientSecret(env('GOOGLE_SECRET'));
        //$client->setRedirectUri($redirect_uri);
        $client->addScope("https://www.googleapis.com/auth/youtube.force-ssl");
        $client->addScope("https://www.googleapis.com/auth/youtube");
        $client->addScope("https://www.googleapis.com/auth/youtube.readonly");
        $client->addScope("https://www.googleapis.com/auth/youtubepartner");

        $youtube = new \Google_Service_YouTube($client);

        $searchResponse = $youtube->channels->listChannels('snippet', array('mine' => true));

        //$subscriptions = Curl::to('https://www.googleapis.com/youtube/v3/subscriptions')->withData(['part' => 'snippet', 'mine' => 'true'])->get();
        echo "<pre>";
        print_r($searchResponse);

上面的代码给出了以下错误:

Google_Service_Exception in REST.php line 118:
{  
"error": {
  "errors": [
  {
     "domain": "usageLimits",
     "reason": "dailyLimitExceededUnreg",
     "message": "Daily Limit for Unauthenticated Use Exceeded.      Continued use requires signup.",
     "extendedHelp": "https://code.google.com/apis/console"
 }],
 "code": 403,
 "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."


 }
}

我也试过使用CURL调用,但这也给了我同样的错误,任何建议都会节省我的一天 我在代码中缺少什么?

2 个答案:

答案 0 :(得分:1)

您的错误意味着您尚未设置Google API控制台项目。您正在访问的资源需要OAuth授权。您需要obtain authorization credentials in the Google Developers Console才能使用OAuth 2.0授权。

  1. 打开Credentials page
  2. API支持API密钥和OAuth 2.0凭据。在您的情况下,为您的项目使用OAuth 2.0:

    • OAuth 2.0:您的应用程序必须发送OAuth 2.0令牌以及访问私有用户数据的任何请求。您的应用程序发送客户端ID,并可能发送客户端密钥以获取令牌。您可以为Web应用程序,服务帐户或已安装的应用程序生成OAuth 2.0凭据。

      有关详细信息,请参阅Creating OAuth 2.0 credentials部分。

  3. 您还可以查看此相关主题:list user subscriptions to all youtube channels after getting access token

答案 1 :(得分:0)

首先,它需要是经过身份验证的电话 所以你需要让人通过Oauth2“认证”并收集令牌。

然后使用令牌发送此呼叫

https://www.googleapis.com/youtube/v3/subscriptions?part=id,snippet,contentDetails&maxResults=50&channelId='.$channelId.'&access_token='.$access_token

然后您可以访问JSON响应并收集它们。