<p>Twitch가 온라인이든 오프라인이든 간단한 이미지를 표시하는 Twitch WordPress 상태 플러그인을 작성 중인데 제대로 작동하지 않습니다. 다음은 파일의 내용입니다: </p>
<pre class="brush:php;toolbar:false;"><?php
/*
플러그인 이름: Twitch 상태 - InvidiousAus
설명: Twitch 채널 "invidiousaus"가 온라인인 경우 이미지를 표시합니다.
작가 : 당신의 이름
버전: 1.0
*/
함수 smfr_twitch_get_stream_status($channel) {
$client_id = 'we57gvgtlmhqnmk44d3mcbc68rgrd1' // Twitch API 클라이언트 ID로 교체
$api_url = "https://api.twitch.tv/helix/streams?user_login={$channel}";
$헤더 = 배열(
'클라이언트 ID' => $client_id,
);
$args = 배열(
'헤더' => $헤더,
);
$response = wp_remote_get($api_url, $args);
if (is_wp_error($response)) {
return "Twitch 상태를 가져오는 중 오류가 발생했습니다.";
}
$response_code = wp_remote_retrieve_response_code($response);
if ($response_code === 200) {
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (!empty($data['data'])) {
'온라인'을 반환합니다.
}
}
'오프라인'을 반환합니다.
}
함수 smfr_twitch_status_fnc() {
$channel = 'invidiousaus'; // "invidiousaus"로 업데이트
$stream_status = smfr_twitch_get_stream_status($channel);
if ($stream_status === '온라인') {
// 채널이 라이브인 경우 "온라인" 이미지를 표시합니다.
$html = "<div class='smfr-twitch-status'><img src='" .plugin_dir_url(__FILE__) "img/en_ligne.jpg'></div>";
} 또 다른 {
// 채널이 오프라인이면 "오프라인" 이미지를 표시합니다.
$html = "<div class='smfr-twitch-status'><img src='" .plugin_dir_url(__FILE__) . "img/hors_ligne.jpg'></div>";
}
$html을 반환합니다.
}
함수 smfr_twitch_status_style() {
// 플러그인에 대한 스타일시트를 등록합니다(필요한 경우)
// wp_enqueue_style('smfr_twitch_status_style', 플러그인_dir_url(__FILE__) . 'style.css');
}
add_action('wp_enqueue_scripts', 'smfr_twitch_status_style');
add_shortcode('smfr_twitch_status', 'smfr_twitch_status_fnc');</pre>
<p>다른 API 엔드포인트를 사용해 보았으나 빈 결과가 나왔습니다.
원하는 결과는 twitch.tv에 온라인인 채널을 표시하는 것입니다.
$headers가 누락되었습니다. 승인: Bearer 2gbdx6oar67tqtcmt49t3wpcgycthx 또는 유사한 토큰.
https://dev.twitch.tv/docs/api/reference/#get-streams의 문서에 따르면 승인에는 앱 액세스 토큰 또는 사용자 액세스 토큰이 필요합니다.
해당 토큰을 얻는 방법을 알아보려면 설명서를 읽어보세요. 이는 oAuth 흐름일 수 있습니다. 기본적으로 애플리케이션을 생성한 다음 client_id 및 client_secret을 가져와야 합니다. 토큰을 요청하려면 client_secret을 사용하세요. 토큰이 있으면 이를 헤더에 추가한 다음 앱을 대신하여 API를 사용할 수 있습니다. (사용자 액세스 토큰의 흐름은 다를 수 있습니다.)