2017-08-13 326 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

相关问题