2017-08-13 65 views
0

我使用youtube API將視頻從我的網站上傳到我的YouTube帳戶。 YouTube API每次都要求訪問我的帳戶的API。youtube api要求我每次訪問我的帳戶的api

有什麼辦法來問只是一個時間,並保存帳戶數據,並沒有爲下一次上傳再問,請幫我

,這是我的代碼:

$client = new \Google_Client(); 
$OAUTH2_CLIENT_ID = 'xxxxxxxxx'; 
$OAUTH2_CLIENT_SECRET = 'xxxxxxxx'; 

$client->setClientId($OAUTH2_CLIENT_ID); 
$client->setClientSecret($OAUTH2_CLIENT_SECRET); 
$client->setAuthConfig('xxxxxxxx/'.client_secrets.json'); 
$client->setScopes('https://www.googleapis.com/auth/youtube'); 
$client->setAccessType("offline"); 
$client->setIncludeGrantedScopes(true); 
$client->setRedirectUri('http://myWebsiteUrl'); 

if (!isset($_GET['code'])) { 
    $auth_url = $client->createAuthUrl(); 
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 
    exit; 
} else{ 
     $title = 'title'; 
     $descriptions = 'description'; 
    } 
    $client->authenticate($_GET['code']); 
    if (isset($_SESSION['access_token'])) { 
     $client->setAccessToken($_SESSION['access_token']); 
    } else { 
     $_SESSION['access_token'] = $client->getAccessToken(); 
    } 
    try { 
     $youtube = new \Google_Service_YouTube($client); 
     $videoPath = 'video path'; 

     $snippet = new \Google_Service_YouTube_VideoSnippet(); 
     $snippet->setTitle($title); 
     $snippet->setDescription($descriptions); 
     $snippet->setCategoryId('22'); 

     $status = new \Google_Service_YouTube_VideoStatus(); 
     $status->privacyStatus = "public"; 

     $video = new \Google_Service_YouTube_Video(); 
     $video->setSnippet($snippet); 
     $video->setStatus($status); 

     $chunkSizeBytes = 1 * 1024 * 1024; 

     $client->setDefer(true); 

     $insertRequest = $youtube->videos->insert("status,snippet", $video); 
     $media = new \Google_Http_MediaFileUpload($client, $insertRequest, 'video/*', null, true, $chunkSizeBytes); 
     $media->setFileSize(filesize($videoPath)); 

     $status = false; 
     $handle = fopen($videoPath, "rb"); 
     while (!$status && !feof($handle)) { 
      $chunk = fread($handle, $chunkSizeBytes); 
      $status = $media->nextChunk($chunk); 
     } 

     fclose($handle); 
     $client->setDefer(false); 

    } catch (Google_Service_Exception $e) { 
    echo $e->getMessage(); 
    } catch (Google_Exception $e) { 
    die('error'); 
    } 

回答

1

你可能需要設置你的OAuth 2.0 credentials

從這裏,你將能夠Create your project and select API services

  1. 打開Credentials page
  2. 該API支持API密鑰和OAuth 2.0憑據。爲準創造憑據是適合您的項目:

    • OAuth 2.0用戶:您的應用程序必須發送一個OAuth 2.0令牌訪問私人用戶數據的任何請求。您的應用程序會發送一個 客戶端ID,可能還會發送一個客戶端密鑰以獲取令牌。您可以爲 爲Web應用程序,服務帳戶, 或已安裝的應用程序生成OAuth 2.0憑據。

      查看Creating OAuth 2.0 credentials節以獲取更多 的信息。

    • API密鑰:未提供OAuth 2.0令牌的請求必須發送API密鑰。該密鑰標識您的項目並提供API 訪問權限,配額和報告。

      有關創建 API密鑰的信息,請參閱Creating API Keys一節。

+0

我成立了這一點,我可以上傳視頻,但我的問題是,YouTube要求每個訪問API我的帳戶的時間。我希望youtube提問一次並保存我的訪問數據以供下次上傳。 – vm30

相關問題