我在PHP中创建了一个函数,用于以JSON格式获取我的频道的YouTube视频列表,但我得到了空白数组。
public function channels_list()
{
$method = $_SERVER['REQUEST_METHOD'];
if($method != 'GET')
{
json_output(400,array('status' => 400,'message' => 'Bad request.'));
}
else
{
$data = array();
$json_link="https://www.googleapis.com/youtube/v3/search?key='MY API KEY'&channelId='MY CHANNEL ID'&part=snippet,id&order=date&maxResults=10";
$json = file_get_contents($this->json_link);
$obj = json_decode($json, true, 512, JSON_BIGINT_AS_STRING);
foreach($obj['items'] as $post){
$jsondata['id'] = isset($post['id']['videoId']) ? $post['id']['videoId'] : "";
$jsondata['published_at'] = isset($post['snippet']['publishedAt']) ? $post['snippet']['publishedAt'] : "";
$jsondata['title'] = isset($post['snippet']['title']) ? $post['snippet']['title'] : "";
$jsondata['description'] = isset($post['snippet']['description']) ? $post['snippet']['description'] : "";
$jsondata['thumbnail'] = "https://i.ytimg.com/vi/{$id}/maxresdefault.jpg";
array_push($data, $jsondata);
}
json_output("200", array("list"=>$data),1);
}
}
答案 0 :(得分:0)
尝试以下代码,我正在使用它,它对我来说很好。
function get_youtube($url){
$youtube = "http://www.youtube.com/oembed?url=". $url ."&format=json";
$curl = curl_init($youtube);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($curl);
curl_close($curl);
return json_decode($return, true);
}
$url = // youtube video url
// Display Data
print_r(get_youtube($url));
<强>更新强>
您不需要OAuth2登录。您可以通过设置API密钥来完成此操作。
这是一个playlistItems-&gt;列表请求。
而不是设置clientId和客户端秘密
在公共API访问中从云控制台为您的API密钥设置API密钥。
$client->setAPIKey($API_KEY);
示例:强>
$API_key = 'Your_API_Key';
$channelID = 'YouTube_Channel_ID';
$maxResults = 10;
$videoList = json_decode(file_get_contents('https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId='.$channelID.'&maxResults='.$maxResults.'&key='.$API_key.''));