duanhangjian8149 2018-05-10 14:01
浏览 70

PHP和SSL中的YouTube API

I created a shortcode to retrieve videos from a channel ID, but it doesn't work without disabling SSL check. I've read that it's not a good idea to disable the check, so is there a better way make it work without disabling it?

Here is my code:

function latest_video_shortcode($atts = [], $content = null) {
$matches = [];
$output = '';
$res = '';
$atts  = shortcode_atts(
    array(
        'id'     => '',
        'items'  => '',
    ), $atts
);
if($atts['id'] == "") {
    $output = '';
} else {
    if($atts['items'] == "") {
        $number = '3';
    } else {
        $number = $atts['items'];
    }
    $id = $atts['id'];
    stream_context_set_default( [
        'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ]);
    $uploads = 'https://www.googleapis.com/youtube/v3/channels?part=contentDetails&key=KEY&id='. $id;
    $data1 = json_decode(file_get_contents($uploads), true);
    $uploads_object = $data1['items'][0]['contentDetails']['relatedPlaylists']['uploads'];
    $url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId='.$uploads_object.'&key=KEY&maxResults='.$number;
    $data2 = file_get_contents($url);
    $characters = json_decode($data2, true);
    for ($i = 0 ; $i < $number ; ++$i) {
        $link = $characters['items'][$i]['snippet']['resourceId']['videoId'];
        $img = $characters['items'][$i]['snippet']['thumbnails']['medium']['url'];
        $title = $characters['items'][$i]['snippet']['title'];
        $contenido = '<div class="video">
        <a target="_blank" href="https://www.youtube.com/watch?v='.$link.'">
          <div class="image">
               <img src="'.$img.'">
               <div class="vid"><i aria-hidden="true" class="fa fa-youtube-play"></i></div>
          </div>
        </a></div>';
        $res .= $contenido;
    }
    $output = '<div id="vid-feed">'.$res.'</div>';  
}
return html_entity_decode($output); 
}
add_shortcode('ytb_video', 'latest_video_shortcode');

And the shortcode works like this:

[ytb_video id="channelID" items="4"]
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP
    • ¥15 Python turtle 画图
    • ¥15 stm32开发clion时遇到的编译问题