2015-03-05 5 views
-1

Я нашел на Github некоторые примеры API YouTube, поэтому для моего веб-сайта я включил «API-интерфейс YouTube Data 3» из консоли разработчиков Google, однако после загрузки на мой сайт кода ниже я не могу получить какие-либо видеоролики, и я получаю эту ошибку от консоль браузера: «Failed to load resource: the server responded with a status of 500 (Internal Server Error)» после нажатия кнопки поиска.Как я могу использовать API-интерфейс поисковой системы YouTube?

это мой search.php файл:

<?php 

$htmlBody = <<<END 
<form method="GET"> 
    <div> 
    Search Term: <input type="search" id="q" name="q" placeholder="Enter Search Term"> 
    </div> 
    <div> 
    Max Results: <input type="number" id="maxResults" name="maxResults" min="1" max="50" step="1" value="25"> 
    </div> 
    <input type="submit" value="Search"> 
</form> 
END; 

if ($_GET['q'] && $_GET['maxResults']) { 
require_once 'Google/Client.php'; 
require_once 'Google/Service/YouTube.php'; 

    $DEVELOPER_KEY = 'my_api_key'; 

    $client = new Google_Client(); 
    $client->setDeveloperKey($DEVELOPER_KEY); 

    $youtube = new Google_Service_YouTube($client); 

    try { 
    $searchResponse = $youtube->search->listSearch('id,snippet', array(
     'q' => $_GET['q'], 
     'maxResults' => $_GET['maxResults'], 
    )); 

    $videos = ''; 
    $channels = ''; 
    $playlists = ''; 

    foreach ($searchResponse['items'] as $searchResult) { 
     switch ($searchResult['id']['kind']) { 
     case 'youtube#video': 
      $videos .= sprintf('<li>%s (%s)</li>', 
       $searchResult['snippet']['title'], $searchResult['id']['videoId']); 
      break; 
     case 'youtube#channel': 
      $channels .= sprintf('<li>%s (%s)</li>', 
       $searchResult['snippet']['title'], $searchResult['id']['channelId']); 
      break; 
     case 'youtube#playlist': 
      $playlists .= sprintf('<li>%s (%s)</li>', 
       $searchResult['snippet']['title'], $searchResult['id']['playlistId']); 
      break; 
     } 
    } 

    $htmlBody .= <<<END 
    <h3>Videos</h3> 
    <ul>$videos</ul> 
    <h3>Channels</h3> 
    <ul>$channels</ul> 
    <h3>Playlists</h3> 
    <ul>$playlists</ul> 
END; 
    } catch (Google_ServiceException $e) { 
    $htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>', 
     htmlspecialchars($e->getMessage())); 
    } catch (Google_Exception $e) { 
    $htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>', 
     htmlspecialchars($e->getMessage())); 
    } 
} 
?> 

<!doctype html> 
<html> 
    <head> 
    <title>YouTube Search</title> 
    </head> 
    <body> 
    <?=$htmlBody?> 
    </body> 
</html> 

Что случилось и почему я не могу получить видео на YouTube?

+0

Что говорят журналы вашего сервера ... – Tschallacka

+0

@MichaelDibbets Не удалось загрузить ресурс: сервер ответил на состояние 500 (Внутренняя ошибка сервера) – NineCattoRules

+1

Да, я это понимаю. Но вопрос в том, что ваш сервер дает 500 или серверу youtube, дающему 500. Моя ставка на вашем сервере дает 500, а сведения об ошибке будут видны в ваших журналах сервера. – Tschallacka

ответ

0

Похоже, что у вас есть синтаксическая ошибка в вашем скрипте. Ошибка 500 - это ошибка статуса HTTP, возвращаемая при возникновении проблемы на стороне сервера, которая препятствует завершению запроса. Маловероятно, что ошибка исходит от API Youtube.

Я не вижу очевидной синтаксической ошибки в этом коде. Вы должны взглянуть на свой журнал ошибок Apache/ngnix/other webserver и перейти оттуда и/или опубликовать ошибки.

Смежные вопросы