使用 Youtube Data API V3 和 Google API Client PHP 将视频上传到 Youtube -- 收到 401(未经授权)消息

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

I have to implement a way to upload video from our site to youtube. I already registered the app in Google Cloud and got all the necessary client ID, client secret code, browser key, redirect uri and server key. I also did turn ON the Youtube Data API V3, Google+ API, Freebase API and YouTube Analytics API as suggessted by various sites.

这是我的代码如下:

    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>";
    }

我引用的这些代码来自:使用 Youtube API V3 和 PHP 将视频上传到 Youtube

I was referencing these codes from: Upload video to Youtube using Youtube API V3 and PHP

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

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

First time I ran this code, it had me connect to the youtube account (with a screen asking to let google manage my YT account) and then on the second try, I got this 401 Message response.

这是来自 youtube 服务器的响应

Here's the response from youtube server

捕获的 Google 服务异常 401 消息是调用 POST 时出错 https://www.googleapis.com/upload/youtube/v3/videos?part=status%2Csnippet&uploadType=multipart&key=AIzaSyCCySI5cToH3sICTmhCEFHW7QkIDptsjXg:(401) 未授权

Caught Google service Exception 401 message is Error calling POST https://www.googleapis.com/upload/youtube/v3/videos?part=status%2Csnippet&uploadType=multipart&key=AIzaSyCCySI5cToH3sICTmhCEFHW7QkIDptsjXg: (401) Unauthorized

我试图寻找各种解决方案但无济于事,我似乎无法找到它.感谢任何帮助,谢谢!

I tried to search for various solutions but to no avail I cant seem to find it. Any help is appreciated, thanks!

后续问题:开发者密钥是浏览器密钥还是服务器密钥?我很困惑我应该在我的代码中使用哪个.我试过切换键,它也不起作用.

follow-up question: Is the developer key the browser key or the server key? I am confused as to which should I use in my code. I've tried switching the keys and it also didn't work.

推荐答案

对于那些遇到 Access Not Configured 问题的人.请使用 Google Developers Console 为您的项目激活 API,

For Those who are getting the problem of Access Not Configured. Please use Google Developers Console to activate the API for your project,

@justine1234 的代码运行良好.删除即可

code by @justine1234 is working perfectly fine. Just remove

$client->setDeveloperKey('DEVELOPER_KEY');

并运行它.

非常感谢@justine1234 的代码.

Thanks a lot for the code @justine1234.

问候

相关文章