【问题标题】:youtube api asks me to access api to my account every oneyoutube api 要求我每个人都访问我的帐户的 api
【发布时间】:2018-01-21 07:40:48
【问题描述】:

我使用 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');
   }

【问题讨论】:

    标签: youtube-api youtube-data-api


    【解决方案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 访问、配额和报告。

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

    【讨论】:

    • 我设置了这个,我可以上传视频,但我的问题是 youtube 每次都要求访问我的帐户的 API。我希望 youtube 询问一次并保存我的访问数据以供下次上传。
    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 2011-04-10
    • 2015-04-19
    • 2014-04-21
    • 2018-01-26
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多