Подпишитесь на подписчиков YouTube с помощью нового API YouTube v3

Я хочу получить счет подписчика с моего канала YouTube с новым API v3.

  1. Я создал приложение Google API для youtube здесь: Консоль API Google
  2. У меня есть ключ APP и идентификатор канала youtube
  3. Я использую «json_decode» для получения объекта
<?php $url_yt = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=CHANNELID&key=APIKEY"; $yt_array = file_get_contents($url_yt); $ytcount = json_decode($yt_array, true); $ytsubscribers = $ytcount['items'][0]['subscriberCount']; echo $ytsubscribers; ?> 

Я получаю некоторые ошибки, даже если фрагмент кода выглядит нормально.

 Warning: file_get_contents() [function.file-get-contents]: SSL: Success in /ytsub2.php on line 4 Warning: file_get_contents() [function.file-get-contents]: Failed to enable crypto in /ytsub2.php on line 4 Warning: file_get_contents(https://www.googleapis.com/youtube/v3/channels?part=statistics&id=CHANNELID&key=APIKEY) [function.file-get-contents]: failed to open stream: operation failed in /ytsub2.php on line 4 

Я не знаю, как исправить эти ошибки. Кажется, мой сервер сайта не может правильно получить JSON. Заранее спасибо за вашу помощь

РЕДАКТИРОВАТЬ :

Я попытался использовать cURL без каких-либо результатов:

 <?php //function to get the remote data function url_get_contents ($url) { if (function_exists('curl_exec')){ $conn = curl_init($url); curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($conn, CURLOPT_FRESH_CONNECT, true); curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1); $url_get_contents_data = (curl_exec($conn)); curl_close($conn); }elseif(function_exists('file_get_contents')){ $url_get_contents_data = file_get_contents($url); }elseif(function_exists('fopen') && function_exists('stream_get_contents')){ $handle = fopen ($url, "r"); $url_get_contents_data = stream_get_contents($handle); }else{ $url_get_contents_data = false; } return $url_get_contents_data; } $url_yt = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=CHANNELID&key=APIKEY"; $yt_array = url_get_contents($url_yt); $ytcount = json_decode($yt_array, true); $ytsubscribers = $ytcount['items'][0]['subscriberCount']; // echo the youtube follower count echo $ytsubscribers; ?> 

Вот правильный рабочий код с cURL:

  # url_get_contents function by Andy Langton: http://andylangton.co.uk/ function url_get_contents($url,$useragent='cURL',$headers=false, $follow_redirects=false,$debug=false) { # initialise the CURL library $ch = curl_init(); # specify the URL to be retrieved curl_setopt($ch, CURLOPT_URL,$url); # we want to get the contents of the URL and store it in a variable curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); # specify the useragent: this is a required courtesy to site owners curl_setopt($ch, CURLOPT_USERAGENT, $useragent); # ignore SSL errors curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); # return headers as requested if ($headers==true){ curl_setopt($ch, CURLOPT_HEADER,1); } # only return headers if ($headers=='headers only') { curl_setopt($ch, CURLOPT_NOBODY ,1); } # follow redirects - note this is disabled by default in most PHP installs from 4.4.4 up if ($follow_redirects==true) { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); } # if debugging, return an array with CURL's debug info and the URL contents if ($debug==true) { $result['contents']=curl_exec($ch); $result['info']=curl_getinfo($ch); } # otherwise just return the contents as a variable else $result=curl_exec($ch); # free resources curl_close($ch); # send back the data return $result; } $url_yt = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=YOUR_CHANNEL_ID&key=YOUR_API_KEY"; url_get_contents($url_yt); $yt_array = url_get_contents($url_yt); $ytcount = json_decode($yt_array, true); $ytsubscribers = $ytcount['items'][0]['statistics']['subscriberCount']; 

Убедитесь, что вы разрешаете доступ с вашего IP-адреса в Google Developers Console.

Также измените эту строку:

 $ytsubscribers = $ytcount['items'][0]['subscriberCount']; 

к этому:

 $ytsubscribers = $ytcount['items'][0]['statistics']['subscriberCount'];