Kuinka käyttää YouTube-sovellusliittymää videon lataamiseen YouTube-kanavalle
Kaikki tietävät YouTubesta. YouTube on ykkönen videoiden jakamisalusta maailmassa. Voimme käyttää videoita YouTuben avulla. Tämä säästää paljon palvelintilaa, ja YouTube-video voidaan helposti upottaa verkkosivustolle. Kuka tahansa voi ladata videon YouTubeen. Sinun tarvitsee vain kirjautua sisään YouTube-tiliisi ja ladata video. Yksinkertainen ja yksinkertainen prosessi. Mutta entä jos jonkun on ladattava videoita YouTube-sovellusliittymän kautta YouTube-kanavalle? Onko se mahdollista? Kyllä se on mahdollista. Tässä artikkelissa tutkitaan, miten YouTube-sovellusliittymää voidaan käyttää videon lataamiseen PHP: llä.
Rekisteröi sovellus ja luo kirjautumistiedot
YouTube-sovellusliittymän käytön aloittaminen edellyttää Google-tiliä. Kun sinulla on Google-tili, rekisteröi hakemuksesi ja hanki API-avaimet.
Alla on vaiheet sovelluksen rekisteröimiseksi ja API-avainten hankkimiseksi.
- Siirry Google Developer Consoleen https://console.developers.google.com
- Luo uusi projekti. Voit valita myös olemassa olevan projektin.
- Kirjoita projektisi nimi. Google Console luo yksilöllisen projektitunnuksen.
- Kun olet luonut projektin, se näkyy vasemman sivupalkin yläosassa.
- Napsauta Kirjasto. Näet luettelon Google-sovellusliittymistä.
- Ota YouTube Data -sovellusliittymä käyttöön.
- Napsauta Tunnistetiedot. Valitse Luo kirjautumistiedot -kohdasta Oauth-asiakastunnus. Valitse valintanappi Web-sovellukselle.
- Anna nimi. Syötä verkkotunnuksesi URL-osoite kohtaan Valtuutetut JavaScript-alkuperät. Anna valtuutettujen uudelleenohjausten URI-tiedostoissa uudelleenohjauksen URL-osoitteen linkki. Minun tapauksessani läpäisin URL-osoitteen http: //localhost/youtube/callback.php.
- Napsauta Luo-painiketta. Saat asiakastunnuksen ja asiakassalaisuuden ponnahdusikkunassa. Kopioi nämä tiedot. Tarvitsemme sitä hetken kuluttua.
Määritä perusasetukset
Videon lataaminen YouTube-sovellusliittymän avulla edellyttää, että luot käyttöoikeustunnuksen. Käyttöoikeustunnus on vain YouTube-tilin tunniste.
Mutta käyttöoikeustunnus vanhenee jonkin ajan kuluttua. Kun käyttöoikeustunnus vanhenee, saat virheellisen luvan. Ratkaisu tähän on suorittaa valtuutusprosessi uudelleen tai luoda käyttöoikeustunnus uudelleen taustalla ja suorittaa lataus loppuun. Tässä artikkelissa käytän toista ratkaisua. Uudistamme käyttöoikeustunnuksen, jos se on vanhentunut taustalla rikkomatta latausprosessia. Näin tekemällä sinun ei tarvitse tehdä valtuutusprosessia uudestaan ja uudestaan.
Tästä huolimatta sinun on ensin valtuutettava tili luomaan käyttöoikeustunnus. Aion käyttää Hybridauth- kirjastoa valtuutukseen ja käyttöoikeustunnuksen luomiseen. Avaa composer.json
tiedosto ja lisää siihen alla olevat rivit.
{
"require": {
"google/apiclient": "2.0",
"hybridauth/hybridauth": "~3.0"
}
}
Huomaa, että YouTube on Googlen tuote ja YouTube-sovellusliittymä on vain Google-sovellusliittymä. Siksi käytämme kirjastoa google / apiclient. Suorita sitten alla oleva komento näiden kirjastojen asennusta varten.
composer install
Tietokannan kokoonpano
Jokaisessa API-puhelussa meidän on lähetettävä pääsykoodi, joten tallenna se tietokantaan. Luo taulukko ‘token’ tietokantaan alla olevan kyselyn avulla.
CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`access_token` text NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
Tämän artikkelin myöhemmässä osassa meidän on oltava vuorovaikutuksessa tämän ‘merkkitaulukon’ kanssa tunnuksen yksityiskohtien noutamiseksi ja päivittämiseksi. Se edellyttää tietokantayhteyden ja muutaman kyselyn kirjoittamista. Luo tiedosto class-db.php
ja lisää siihen seuraava koodi.
luokka-db.php
<?php
class DB {
private $dbHost = "DB_HOST";
private $dbUsername = "DB_USERNAME";
private $dbPassword = "DB_PASSWORD";
private $dbName = "DB_NAME";
public function __construct(){
if(!isset($this->db)){
// Connect to the database
$conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);
if($conn->connect_error){
die("Failed to connect with MySQL: ". $conn->connect_error);
}else{
$this->db = $conn;
}
}
}
public function is_table_empty() {
$result = $this->db->query("SELECT id FROM token");
if($result->num_rows) {
return false;
}
return true;
}
public function get_access_token() {
$sql = $this->db->query("SELECT access_token FROM token");
$result = $sql->fetch_assoc();
return json_decode($result['access_token']);
}
public function get_refersh_token() {
$result = $this->get_access_token();
return $result->refresh_token;
}
public function update_access_token($token) {
if($this->is_table_empty()) {
$this->db->query("INSERT INTO token(access_token) VALUES('$token')");
} else {
$this->db->query("UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)");
}
}
}
Välitä tietokannan kirjautumistiedot yllä olevaan tiedostoon. Oletan, että tässä haluat käyttää yhtä YouTube-tiliä. Jos aiot käyttää useita tilejä, muokkaa yllä olevia kyselyjä tarpeidesi mukaan.
Luo käyttöoikeustunnus
Olet asentanut kirjastot ja luonut taulukon tunnuksen tallentamista varten. Tehdään nyt valtuutusprosessi, napataan käyttöoikeustunnus ja tallennetaan se ‘tunniste’ -taulukkoon.
Luo config.php
tiedosto ja kirjoita kokoonpano HybridAuth-kirjaston ohjeiden mukaisesti.
config.php
<?php
require_once 'vendor/autoload.php';
require_once 'class-db.php';
define('GOOGLE_CLIENT_ID', 'PASTE_CLIENT_ID_HERE');
define('GOOGLE_CLIENT_SECRET', 'PASTE_CLIENT_SECRET_HERE');
$config = [
'callback' => 'YOUR_DOMAIN_URL/callback.php',
'keys' => [
'id' => GOOGLE_CLIENT_ID,
'secret' => GOOGLE_CLIENT_SECRET
],
'scope' => 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/youtube.upload',
'authorize_url_parameters' => [
'approval_prompt' => 'force', // to pass only when you need to acquire a new refresh token.
'access_type' => 'offline'
]
];
$adapter = new HybridauthProviderGoogle( $config );
Korvaa paikkamerkit Google-kirjautumistietojesi todellisilla arvoilla. Lisää sama takaisinsoitto-URL, jonka olet välittänyt luodessasi konsolisovellusta. Se tarkoittaa, että kun käyttäjä on suorittanut valtuutusprosessin, hän ohjaa callback.php
tiedoston uudelleen .
Vuonna callback.php
tiedosto, noudamme käyttötunnisteena yksityiskohtia ja tallentaa sen tietokantaan.
callback.php
<?php
require_once 'config.php';
try {
$adapter->authenticate();
$token = $adapter->getAccessToken();
$db = new DB();
if($db->is_table_empty()) {
$db->update_access_token(json_encode($token));
echo "Access token inserted successfully.";
}
}
catch( Exception $e ){
echo $e->getMessage() ;
}
Siirry selaimeesi ja suorita YOUR_DOMAIN_URL / callback.php, ohjaat uudelleen Google-tilille, suoritat valtuutusprosessin ja sinun pitäisi nähdä menestysviesti. Tarkista tietokantataulukon ‘token’. Sen pitäisi tallentaa tunnuksen tiedot. Ja se tarkoittaa, että voit ladata videon YouTube-kanavallesi eteenpäin.
Sait käyttöoikeustunnuksen, jota käytetään videon lataamiseen YouTube-kanavalle Google-sovellusliittymän kautta. Mutta kuten aiemmin mainitsin, käyttöoikeustunnus vanhenisi jonkin ajan kuluttua, ja me uudistamme sen taustalla pyytämättä lupamenettelyä uudelleen.
Voimme tehdä sen käyttämällä ‘referh_token’. Jos tarkastelet taulukon ‘access_token’ -saraketta, näet, että se sisältää myös merkinnän ‘refresh_token’. ‘Refresh_token’ -toiminnon avulla kutsumme ‘/ o / oauth2 / token’ -päätepisteen ja luodaan käyttöoikeustunnus taustalla.
Seuraavaksi tarvitset HTML-lomakkeen, jonka avulla voit selata videota ja lähettää sen palvelimelle lataamista varten. Luodaan yksinkertainen HTML-muoto seuraavasti.
index.php
<form method="post" enctype="multipart/form-data">
<p><input type="text" name="title" placeholder="Enter Video Title" /></p>
<p><textarea name="summary" cols="30" rows="10" placeholder="Video description"></textarea></p>
<p><input type="file" name="file"/></p>
<input type="submit" name="submit" value="Submit" />
</form>
Lomakkeessa on 3 kenttää – otsikko, kuvaus ja tiedosto. Kun lähetät tämän lomakkeen, video tulee ladata YouTube-kanavallesi sekä annettu otsikko ja kuvaus.
index.php
<?php
require_once 'config.php';
if (isset($_POST['submit'])) {
$arr_data = array(
'title' => $_POST['title'],
'summary' => $_POST['summary'],
'video_path' => $_FILES['file']['tmp_name'],
);
upload_video_on_youtube($arr_data);
}
function upload_video_on_youtube($arr_data) {
$client = new Google_Client();
$db = new DB();
$arr_token = (array) $db->get_access_token();
$accessToken = array(
'access_token' => $arr_token['access_token'],
'expires_in' => $arr_token['expires_in'],
);
$client->setAccessToken($accessToken);
$service = new Google_Service_YouTube($client);
$video = new Google_Service_YouTube_Video();
$videoSnippet = new Google_Service_YouTube_VideoSnippet();
$videoSnippet->setDescription($arr_data['summary']);
$videoSnippet->setTitle($arr_data['title']);
$video->setSnippet($videoSnippet);
$videoStatus = new Google_Service_YouTube_VideoStatus();
$videoStatus->setPrivacyStatus('public');
$video->setStatus($videoStatus);
try {
$response = $service->videos->insert(
'snippet,status',
$video,
array(
'data' => file_get_contents($arr_data['video_path']),
'mimeType' => 'video/*',
'uploadType' => 'multipart'
)
);
echo "Video uploaded successfully. Video id is ". $response->id;
} catch(Exception $e) {
if( 401 == $e->getCode()) {
$refresh_token = $db->get_refersh_token();
$client = new GuzzleHttpClient(['base_uri' => 'https://accounts.google.com']);
$response = $client->request('POST', '/o/oauth2/token', [
'form_params' => [
"grant_type" => "refresh_token",
"refresh_token" => $refresh_token,
"client_id" => GOOGLE_CLIENT_ID,
"client_secret" => GOOGLE_CLIENT_SECRET,
],
]);
$data = (array) json_decode($response->getBody());
$data['refresh_token'] = $refresh_token;
$db->update_access_token(json_encode($data));
upload_video_on_youtube($arr_data);
} else {
//echo $e->getMessage(); //print the error just in case your video is not uploaded.
}
}
}
?>
Yllä oleva koodi ottaa videotiedoston HTML-lomakkeesta ja lähettää sen sovellusliittymän kautta YouTube-kanavallesi. Jos käyttöoikeustunnuksesi on vanhentunut, se uudistaa tunnuksen taustalla ja jatkaa prosessia rikkomatta sitä.
Lähetä mukautettu pikkukuva YouTube-videoon
Jos rakennat mukautettua sovellusta, joka hallinnoi YouTube-videoita, todennäköisesti haluat ladata pikkukuvan YouTube-videoon. Mukautetun pikkukuvan lataaminen edellyttää, että käyttäjien on vahvistettava puhelinnumeronsa YouTube-tilillä. Käy linkissähttps://www.youtube.com/features ja vahvista puhelinnumero.
Kun olet vahvistanut puhelinnumeron, voit käyttää edellistä lomakettamme ja koodiamme pienin muutoksin ja asettaa mukautetun pikkukuvan lähetetylle videolle. Lisää ensin lomakekenttä, joka sallii kuvien lataamisen. Suositeltu YouTube-pikkukuvan koko on 1280x720
.
<p>
<label>Image</label>
<input type="file" name="image" accept="image/*" />
</p>
Lähetettävään lomakkeeseen olemme rakentaneet taulukon, $arr_data
joka sisältää kaikki lomaketiedot. Lisää uusi pari kuvaa varten taulukko $arr_data
seuraavasti.
$arr_data = array(
'title' => $_POST['title'],
'summary' => $_POST['summary'],
'video_path' => $_FILES['file']['tmp_name'],
'image_path' => $_FILES['image']['tmp_name'], // here we are passing image
);
Seuraavaksi, kun koodimme on ladannut videon YouTubeen, meidän on otettava videotunnus ja määritettävä videolle oma pikkukuva.
<?php
...
...
echo "Video uploaded successfully. Video id is ". $response->id;
//upload thumbnail
$videoId = $response->id;
$chunkSizeBytes = 1 * 1024 * 1024;
$client->setDefer(true);
$setRequest = $service->thumbnails->set($videoId);
$media = new Google_Http_MediaFileUpload(
$client,
$setRequest,
'image/png',
null,
true,
$chunkSizeBytes
);
$imagePath = $arr_data['image_path'];
$media->setFileSize(filesize($imagePath));
$status = false;
$handle = fopen($imagePath, "rb");
while (!$status && !feof($handle)) {
$chunk = fread($handle, $chunkSizeBytes);
$status = $media->nextChunk($chunk);
}
fclose($handle);
$client->setDefer(false);
echo "<br>Thumbanil: ". $status['items'][0]['default']['url'];
Saatat myös haluta koodin videoiden poistamiseksi YouTube-sovellusliittymän avulla. Videon poistamiseksi tarvitset lisäalueen, https://www.googleapis.com/auth/youtube
jonka olen jo sisällyttänyt yllä määritystiedostoon. Se tarkoittaa, että yllä olevien vaiheiden avulla luotua käyttöoikeustunnusta voidaan käyttää videon poistamiseen.
Alla on koodi, joka poistaa videon YouTube-kanavastasi.
<?php
require_once 'config.php';
delete_video('VIDEO_ID_HERE');
function delete_video($id) {
$client = new Google_Client();
$db = new DB();
$arr_token = (array) $db->get_access_token();
$accessToken = array(
'access_token' => $arr_token['access_token'],
'expires_in' => $arr_token['expires_in'],
);
try {
$client->setAccessToken($accessToken);
$service = new Google_Service_YouTube($client);
$service->videos->delete($id);
} catch(Exception $e) {
if( 401 == $e->getCode()) {
$refresh_token = $db->get_refersh_token();
$client = new GuzzleHttpClient(['base_uri' => 'https://accounts.google.com']);
$response = $client->request('POST', '/o/oauth2/token', [
'form_params' => [
"grant_type" => "refresh_token",
"refresh_token" => $refresh_token,
"client_id" => GOOGLE_CLIENT_ID,
"client_secret" => GOOGLE_CLIENT_SECRET,
],
]);
$data = (array) json_decode($response->getBody());
$data['refresh_token'] = $refresh_token;
$db->update_access_token(json_encode($data));
delete_video($id);
} else {
//echo $e->getMessage(); //print the error just in case your video is not uploaded.
}
}
}
Se siitä! Toivon, että sait tietää kuinka ladata video YouTube-kanavalle YouTube-sovellusliittymän avulla. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.