首页 > 解决方案 > PHP 和 SSL 中的 YouTube API

问题描述

我创建了一个短代码来从频道 ID 中检索视频,但如果不禁用 SSL 检查,它就无法工作。我读过禁用检查不是一个好主意,那么有没有更好的方法让它在不禁用它的情况下工作?

这是我的代码:

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');

短代码的工作方式如下:

[ytb_video id="channelID" items="4"]

标签: phpwordpresssslyoutube-api

解决方案


推荐阅读