当前位置: 首页 > 知识库问答 >
问题:

使用Youtube数据API V3和Google API客户端PHP将视频上载到Youtube--获取401(未经授权)消息

孔安阳
2023-03-14

我必须实现一种将视频从我们的网站上传到youtube的方法。我已经在Google Cloud中注册了该应用程序,并获得了所有必要的客户端ID、客户端密码、浏览器密钥、重定向uri和服务器密钥。我还按照不同网站的建议打开了YouTubeData API V3、Google API、Freebase API和YouTubeAnalytics API。

下面是我的代码:

    require_once 'google-api-php-client/src/Google_Client.php';
    require_once 'google-api-php-client/src/contrib/Google_YouTubeService.php';

    $client = new Google_Client();
    $client->setApplicationName('Application Name');
    $client->setClientId('CLIENT_ID');
    $client->setClientSecret('CLIENT_SECRET_CODE');
    $client->setRedirectUri('REDIRECT_URI');
    $client->setDeveloperKey('DEVELOPER_KEY');

    $youtube = new Google_YouTubeService($client);
    if (isset($_GET['code'])) {
        $client->authenticate();
        $_SESSION['token'] = $client->getAccessToken();
        $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
        header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
    }

    if (isset($_SESSION['token'])){
        $client->setAccessToken($_SESSION['token']);
    }

    if ($client->getAccessToken()){
        $path_to_video_to_upload = $_FILES["video"]["tmp_name"];
        $mime_type = $_FILES["video"]["type"];
        $snippet = new Google_VideoSnippet();
        $snippet->setTitle('Highlights');
        $snippet->setDescription('Description Of Video');
        $snippet->setTags(array('training', 'Soccer'));
        $snippet->setCategoryId(17);

        $status = new Google_VideoStatus();
        $status->privacyStatus = "private";

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

        try {
            $obj = $youtube->videos->insert("status,snippet", $video,
            array("data"=>file_get_contents($path_to_video_to_upload), 
            "mimeType" => $mime_type));
            } catch(Google_ServiceException $e) {
            print "Caught Google service Exception ".$e->getCode(). " message is ".$e->getMessage()." <br>";
            }

    $_SESSION['token'] = $client->getAccessToken();
    }

    else{
            $authUrl = $client->createAuthUrl();
            print "<a href='$authUrl'>Connect Me!</a>";
    }

我引用这些代码:使用YouTubeAPI V3和PHP将视频上传到YouTube

http://www.dreu.info/blog/uploading-a-video-to-youtube-through-api-version-3-in-php/

我第一次运行此代码时,它让我连接到youtube帐户(屏幕要求让google管理我的YT帐户),然后在第二次尝试时,我收到了这个401消息响应。

以下是youtube服务器的响应

捕获谷歌服务异常401消息是错误调用POSThttps://www.googleapis.com/upload/youtube/v3/videos?part=status,片段

我试图寻找各种各样的解决办法,但似乎没有找到。非常感谢您的帮助,谢谢!

后续问题:开发人员密钥是浏览器密钥还是服务器密钥?我不知道应该在代码中使用哪个。我试过换钥匙,但也没用。

共有2个答案

吴安和
2023-03-14

对于那些遇到访问未配置问题的人。请使用Google Developers Console为您的项目激活API,

@justine1234编写的代码运行得非常好。只需删除

$client->setDeveloperKey('DEVELOPER_KEY');

然后运行它。

非常感谢代码@justine1234。

当做

苏硕
2023-03-14

我也有同样的问题。

检查您的youtube帐户。您是否创建了频道?如果你不这样做,你将无法添加视频(通过API甚至youtube)。

在youtube中创建频道后,它起作用了。不需要新代码或新密钥。

 类似资料:
  • 当我想使用YouTube数据API上传视频时,它抛出了EXEPOPTION 401,但是我的凭据的范围是 我已经在Google Developer Console中启用了API。我怎么才能解决这个问题,我很困惑。 2020-06-18 17:28:18.007信息26088---[主]c.google。应用程序编程接口。客户http。HttpTransport: --------------请求-

  • 我正试图用PHP上传一个视频到Youtube。我用的是Youtube API v3,我用的是最新的谷歌API PHP客户端库的源代码。< br >我使用< br > https://code.google.com/p/google-api-php-client/上给出的示例代码来执行身份验证。身份验证顺利通过,但当我尝试上传视频时,我得到< code > Google _ service exce

  • 我已经遵循了一个关于如何使用youtube gdata的教程。使用来自youtube的视频和点击来填充列表视图。源代码可在以下位置找到: http://blog.blundell-apps.com/click-item-in-a-listview-to-show-youtube-video/ 一旦我更改了YouTube GData链接 来自: https://gdata.youtube.com/f

  • 我的数据未发布在postman api中,这会导致以下错误: 单调的节奏。我的主人。com/api/领域:1个职位http://dradiobeats.x10host.com/api/areas401(未授权)核心。js:4002错误HttpErrorResponse 我的app.component.ts 如何解决此错误?

  • 我正在我的一个项目中使用 YouTube 数据 API 版本 3.0 从 YouTube 获取我的频道视频详细信息。我不希望用户登录到他/她的Google帐户,这就是为什么我直接使用Search.list方法而不是通过OAuth 2.0方式。 通常,我使用以下URL获取数据。 https://www.googleapis.com/youtube/v3/search?key={API_KEY} 现在

  • 非常新的初学者。我目前正在做一个项目,用户可以输入一个搜索词,并使用YouTube数据API v3获得一个视频ID。然后这个视频ID被用来组装一个URL,我用它把视频下载到我的电脑上。这是我用来做这件事的。(忽略我已经导入的库,我稍后会清理它们) 因此,对于“Youtube Rewind 2018”的搜索查询,Youtube API将返回以下内容: {'kind': 'youtube#search