2016-10-04 7 views

答えて

1

はいOmprakashは、あなたがPHPのためのGoogle APIクライアントライブラリを必要とします

  1. 可能です。
  2. また、 https://console.developers.google.com/にプロジェクトを作成し、資格情報を取得する必要があります( クライアントの秘密&クライアントID)。
  3. 最後に、特定のチャネルのアクセストークンを生成する必要があります。 アクセストークンを生成するには、このリンク (https://youtube-eng.googleblog.com/2013/06/google-page-identities-and-youtube-api_24.html) をご覧ください。
  4. これらのすべてを準備したら、 サンプルコードをGoogle APIクライアントライブラリ(PHP用)で使用して、 の動画をYouTubeにアップロードできます。

注:詳細なプロセスではありません。すべてのプロセスをスタックオーバーフローで詳しく説明することはできません。しかし、解決に近づけば、追加の助言のためにコメントを投稿し直すことができます。

これはYouTubeに動画をアップロードするためのコード例です。 1) 2) 3) 4) そして、私のビデオがYouTubeで正常にアップロード、しかし、私がしたい - を:希望は、それはあなたが述べたように、私はすでに、次の手順を行っているあなた

/*include google libraries */ 
require_once '../api/src/Google/autoload.php'; 
require_once '../api/src/Google/Client.php'; 
require_once '../api/src/Google/Service/YouTube.php'; 

$application_name = 'Your application/project name created on google developer console'; 
$client_secret = 'Your client secret'; 
$client_id = 'Your client id'; 
$scope = array('https://www.googleapis.com/auth/youtube.upload', 'https://www.googleapis.com/auth/youtube', 'https://www.googleapis.com/auth/youtubepartner'); 


    try{ 
     $key = file_get_contents('the_key.txt'); //it stores access token obtained in step 3 
     $videoPath = 'video path on your server goes here'; 
     $videoTitle = 'video title'; 
     $videoDescription = 'video description'; 
     $videoCategory = "22"; //please take a look at youtube video categories for videoCategory.Not so important for our example 
     $videoTags = array('tag1', 'tag2','tag3'); 

     // Client init 
     $client = new Google_Client(); 
     $client->setApplicationName($application_name); 
     $client->setClientId($client_id); 
     $client->setAccessType('offline'); 
     $client->setAccessToken($key); 
     $client->setScopes($scope); 
     $client->setClientSecret($client_secret); 

     if ($client->getAccessToken()) { 
      /** 
      * Check to see if our access token has expired. If so, get a new one and save it to file for future use. 
      */ 
      if($client->isAccessTokenExpired()) { 
       $newToken = json_decode($client->getAccessToken()); 
       $client->refreshToken($newToken->refresh_token); 
       file_put_contents('the_key.txt', $client->getAccessToken()); 
      } 

      $youtube = new Google_Service_YouTube($client); 



      // Create a snipet with title, description, tags and category id 
      $snippet = new Google_Service_YouTube_VideoSnippet(); 
      $snippet->setTitle($videoTitle); 
      $snippet->setDescription($videoDescription); 
      $snippet->setCategoryId($videoCategory); 
      $snippet->setTags($videoTags); 

      // Create a video status with privacy status. Options are "public", "private" and "unlisted". 
      $status = new Google_Service_YouTube_VideoStatus(); 
      $status->setPrivacyStatus('public'); 

      // Create a YouTube video with snippet and status 
      $video = new Google_Service_YouTube_Video(); 
      $video->setSnippet($snippet); 
      $video->setStatus($status); 

      // Size of each chunk of data in bytes. Setting it higher leads faster upload (less chunks, 
      // for reliable connections). Setting it lower leads better recovery (fine-grained chunks) 
      $chunkSizeBytes = 1 * 1024 * 1024; 

      // Setting the defer flag to true tells the client to return a request which can be called 
      // with ->execute(); instead of making the API call immediately. 
      $client->setDefer(true); 

      // Create a request for the API's videos.insert method to create and upload the video. 
      $insertRequest = $youtube->videos->insert("status,snippet", $video); 

      // Create a MediaFileUpload object for resumable uploads. 
      $media = new Google_Http_MediaFileUpload(
       $client, 
       $insertRequest, 
       'video/*', 
       null, 
       true, 
       $chunkSizeBytes 
      ); 
      $media->setFileSize(filesize($videoPath)); 


      // Read the media file and upload it chunk by chunk. 
      $status = false; 
      $handle = fopen($videoPath, "rb"); 
      while (!$status && !feof($handle)) { 
       $chunk = fread($handle, $chunkSizeBytes); 
       $status = $media->nextChunk($chunk); 
      } 

      fclose($handle); 

      /** 
      * Video has successfully been upload, now lets perform some cleanup functions for this video 
      */ 
      if ($status->status['uploadStatus'] == 'uploaded') { 
       $youtube_id = $status->id; //you got here youtube video id 
      } else { 
       // handle failere here 
      } 

      // If you want to make other calls after the file upload, set setDefer back to false 
      $client->setDefer(true); 

     } else{ 
      // @TODO Log error 
      echo 'Problems creating the client'; 
     } 

    } catch(Google_Service_Exception $e) { 
     echo "\r\n Caught Google service Exception ".$e->getCode(). " message is ".$e->getMessage(); 
     echo "\r\n Stack trace is ".$e->getTraceAsString(); 
    } catch (Exception $e) { 
     echo "\r\n Caught Google service Exception ".$e->getCode(). " message is ".$e->getMessage(); 
     echo "\r\n Stack trace is ".$e->getTraceAsString(); 
    } 
+0

のに役立ちます特定のチャンネルまたは特定のアカウントにアップロードする。あなたのYouTubeアカウントでビデオをアップロードするユーザーのために。 –

+0

手順3では、アクセストークンが記載されています。動画をYouTubeにアップロードするには、アクセストークンが必要です。ユーザーからこのアクセストークンを収集しています。そのため、ビデオはチャンネルにアップロードされます。その代わりに、手順3のリンクに記載されているように、独自のアクセストークンを作成する必要があります。このアクセストークンは、しばらくしてから終了します。 –

+0

@Omprakash:答えにコードを追加しました。 –

関連する問題