php - 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"]
解决方案
推荐阅读
- r - R:将月份和2位数年份转换为日期
- android - 如何使用无限动画效果?
- python - paho mqtt 中的 on_message 是否在新线程中运行?
- swift - 为什么 iOS13 更改段落中的 NSAttributedString 中的字体系列
- qt - 我的 Qt 算法中不能包含 VTK 标头
- .net - 使用 Azure AD MSAL 进行 React/.Net Core 身份验证
- php - 使用ajax获取php json答案
- c - 迷宫问题。从矩阵中的起点获取相邻单元格
- flutter - 我应用了 debugshowcheckedmodebanner: false,但仍然在每个屏幕上显示调试标签
- c# - 避免 if / switch case 构造以使代码更具可读性