Da dies eine Frage zu der neuen YouTube-API ist, die gerade veröffentlicht wurde, handelt es sich nicht um ein Duplikat.Abrufen von YouTube Live Stream Chat-Nachrichten
Ich versuche, die Chat-Nachrichten von der YouTube-API zu holen 3. Ich habe alles versucht, was ich kann, und ich bin festgefahren.
Ich brauche die liveChatId, um sie abrufen zu können, aber ich weiß nicht, wie ich diesen Wert abrufen kann. Die API sagt, dass Sie es von LiveBroadcast snippet.liveChatId erhalten, aber mit dem Code, den ich diesem Beitrag beigefügt habe, gibt es keinen Wert im Feld liveChatId. Es ist einfach leer. Wie kann ich die liveChatId richtig abrufen?
<?php
session_start();
// Call set_include_path() as needed to point to your client library.
require_once 'Google/autoload.php';
require_once 'Google/Client.php';
require_once 'Google/Service/YouTube.php';
$OAUTH2_CLIENT_ID = 'MY-CLIENT-ID';
$OAUTH2_CLIENT_SECRET = 'MY-CLIENT-SECRET';
$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube');
$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'],
FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);
// Define an object that will be used to make all API requests.
$youtube = new Google_Service_YouTube($client);
$_SESSION['state'] = $_GET['state'];
if (isset($_GET['code'])) {
if (strval($_SESSION['state']) !== strval($_GET['state'])) {
die('The session state did not match.');
}
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
header('Location: ' . $redirect);
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
// Check to ensure that the access token was successfully acquired.
if ($client->getAccessToken()) {
try {
// Execute an API request that lists broadcasts owned by the user who
// authorized the request.
$broadcastsResponse = $youtube->liveBroadcasts->listLiveBroadcasts(
'id,snippet',
array(
'mine' => 'true',
));
var_dump($broadcastsResponse['items']);
$htmlBody .= "<h3>Live Broadcasts</h3><ul>";
foreach ($broadcastsResponse['items'] as $broadcastItem) {
$htmlBody .= $broadcastItem['snippet']['title'] ."<br />Chat ID: ". $broadcastItem['liveChatId'] ."<br />ID: ". $broadcastItem['id'];
}
$htmlBody .= '</ul>';
} catch (Google_Service_Exception $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()));
}
$_SESSION['token'] = $client->getAccessToken();
} else {
// If the user hasn't authorized the app, initiate the OAuth flow
$state = mt_rand();
$client->setState($state);
$_SESSION['state'] = $state;
$authUrl = $client->createAuthUrl();
$htmlBody = <<<END
<h3>Authorization Required</h3>
<p>You need to <a href="$authUrl">authorize access</a> before proceeding.<p>
END;
}
?>
<!doctype html>
<html>
<head>
<title>My Live Streams</title>
</head>
<body>
<?=$htmlBody?>
</body>
</html>
Wo bin ich verloren?
Ich verstehe nicht, warum dies kein Duplikat der verknüpften Frage ist. Das verknüpfte Duplizierungsziel * verwendet * die neue API. – JAL
Die verknüpfte Frage bezieht sich darauf, wie Sie die ID erhalten und verwenden können. Ich versuche wirklich, es auf diese Weise zu erhalten, aber ich kann die LiveChatId nicht von dem Ergebnis mit meinem Beispielcode abrufen. Das Feld liveChatId ist leer. Deshalb brauche ich Hilfe! : D –
Sie versuchen, die 'liveChatId' aus Ihrer eigenen Veranstaltung zu holen, oder? Nicht ein anderer Benutzer? – JAL