0
我正在做一個應用程序,將視頻從網絡表單上傳到我的YouTube帳戶。我想使用服務器身份驗證。Youtube上傳API的驗證錯誤
我在Google雲端控制檯中配置了我的應用程序,並且已將私鑰下載到我的服務器中。
這是代碼:
const SERVICE_ACCOUNT_EMAIL = 'MY_ACCOUNT_EMAIL';
const CLIENT_ID = 'MY_CLIENT_ID';
const KEY_FILE = './MY_PRIVATE_KEY.p12';
if (!isset($_FILES['video'])) {
echo '<form method="post" enctype="multipart/form-data">';
echo '<input type="file" name="video">';
echo '<input type="submit" value="Submit">';
echo '</form>';
}
else {
require_once 'Google/Client.php';
require_once 'Google/Service/YouTube.php';
$client = new Google_Client();
$client->setApplicationName('My Application Name');
$client->setClientId(CLIENT_ID);
$oauthClient = new Google_Auth_OAuth2($client);
// Set your cached access token. Remember to replace $_SESSION with a
// real database or memcached.
session_start();
if (isset($_SESSION['token'])) {
$oauthClient->setAccessToken($_SESSION['token']);
} else {
$key = file_get_contents(KEY_FILE);
$oauthClient->refreshTokenWithAssertion(new Google_Auth_AssertionCredentials(SERVICE_ACCOUNT_EMAIL, array('https://www.googleapis.com/auth/youtube'), $key));
}
if ($oauthClient->getAccessToken()) {
echo '<p>Uploading ...</p>';
$youtube = new Google_Service_YouTube($client);
$videoPath = $_FILES['video']['tmp_name'];
// Create a snippet with title, description, tags and category ID
$snippet = new Google_Service_YouTube_VideoSnippet();
$snippet->setTitle("Test video ".date('H:i'));
$snippet->setDescription("Test description ".date('H:i'));
$snippet->setTags(array("test", "oauth"));
// Set the video's status to "public".
$status = new Google_Service_YouTube_VideoStatus();
$status->privacyStatus = "public";
// Associate the snippet and status objects with a new video resource.
$video = new Google_Service_YouTube_Video();
$video->setSnippet($snippet);
$video->setStatus($status);
// Create a request for the API's videos.insert method to create and upload the video.
$insertRequest = $youtube->videos->insert("status,snippet", $video, array("data"=>file_get_contents($videoPath), "uploadType" => "media", "mimeType" => "video/mp4"));
echo '<h3>Upload complete</h3>';
echo '<p><a href="https://www.youtube.com/watch?v='.$status['id'].'" target="_blank">Link to the video</a></p>';
}
else {
$authUrl = $client->createAuthUrl();
print "<a href='$authUrl'>Authorize this application</a>";
}
}
它不工作。我有一個致命錯誤:
錯誤調用POST https://www.googleapis.com/upload/youtube/v3/videos?part=status%2Csnippet&uploadType=multipart:(401)需要登錄
我在做什麼錯?