关于php:通过YouTube API将视频上传到特定的Google帐户

Uploading videos to specific Google account through YouTube API

经过数小时的搜索,我还没有找到解决方案。
我发现的最相关的帖子是:Youtube API:服务帐户

根据Google文档的此部分:此处

我读到的是YT API不支持服务帐户,因此我还没有找到其他解决方案。

有什么方法可以将视频上传到特定的Google(YT)帐户,而无需要求我的服务用户登录其Google帐户?事实是,我希望网站上的任何用户都可以将私有模式下的一些视频上传到我的Youtube帐户,但是Google,当通过以下部分的代码创建客户端时使用Google:

1
2
3
4
5
6
7
8
9
10
11
12
$client = new Google_Client();
$key = file_get_contents("some/path/to/".KEY_FILE);
$client->setClientId(CLIENT_ID);
     $client->setAssertionCredentials(
          new Google_AssertionCredentials(
              SERVICE_ACCOUNT_NAME,
              array('https://www.googleapis.com/auth/youtube'),
                $key
          )
     );
$client->setRedirectUri('some_url');
$client->setDeveloperKey('some_DEV_KEY');

要求我的用户使用自己的Google帐户登录...

通过在代码中输入我自己的凭据来绕过此登录请求的任何方法吗?

对不起,英语不好,谢谢。


Eric,如果您使用浏览器上传API(V2)https://developers.google.com/youtube/2.0/developers_guide_protocol_browser_based_uploading,则可以这样做。但是,它不完全支持CORS,这意味着您无法显示进度栏,必须使用iframe处理浏览器重定向。
Youtube解决了V3中的CORS问题,但它们不再支持基于浏览器的上传,因此它们很烂,您必须选择代理通过服务器上传的视频(我这样做),或要求用户使用其Google帐户登录。我认为他们这样做是为了推广plus服务。他们"修复"问题(大约一年后)后,一个家伙@jeff展示了一个使用google plus登录的演示!真是个玩笑!


这是解决方案:使用ClientLogin身份验证。
这样我们就可以通过以下行指定YT凭证:

1
$httpClient = Zend_Gdata_ClientLogin::getHttpClient($youtubeEmail, $youtubePassword, 'youtube');

NB:第三个参数是我们要连接到的服务的" id"。

我知道不建议使用ClientLogin,但是此解决方案有效。如果有任何更安全,更干净的解决方案,请告诉我:)

祝你有美好的一天


根据设计,您无法轻松地完成所需的工作;您不想对其他人通过您的应用程序上传到您的帐户的行为负责。实现您所追求的最好的方法是使用类似Youtube Direct Lite的功能-用户将使用自己的凭据将视频上传到自己的帐户中,但会自动将这些视频绑定到您运行自己的应用程序的播放列表中(甚至还可以让您查看是否应包含这些视频的功能)。

您也可以推出自己的解决方案,以实现相同的方法。相信我...在某个时候,您将感激您不能让任何人上传到您的个人帐户!