youtube api要求我每次访问我帐户的api

时间:2017-08-13 07:14:04

标签: youtube-api youtube-data-api

我使用youtube API将视频从我的网站上传到我的YouTube帐户。 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 个答案:

答案 0 :(得分:1)

您可能需要设置OAuth 2.0 credentials

从这里开始,您将可以Create your project and select API services

  
      
  1. 打开Credentials page
  2.   
  3. 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   访问,配额和报告。

           

      有关创建的信息,请参阅Creating API Keys部分   API密钥。

    •   
  4.