1

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

根据谷歌文档的这一部分:here

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

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

$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 帐户登录...

有什么方法可以通过在代码中输入我自己的凭据来绕过此登录请求?

抱歉英语不太好,谢谢。

4

3 回答 3

2

Eric,如果您使用浏览器上传 API (V2) https://developers.google.com/youtube/2.0/developers_guide_protocol_browser_based_uploading ,则可以这样做。但是它不完全支持 CORS,这意味着您无法显示进度条,并且您必须使用 iframe 来处理浏览器重定向。Youtube修复了 V3 中的 CORS 问题,但它们不再支持基于浏览器的上传,所以它们很糟糕,您必须选择通过您的服务器代理视频上传(我这样做)或要求用户使用他们的谷歌帐户登录。我认为他们这样做是为了推广 plus 服务。在他们“修复”之后(大约花了一年时间),一个人 @jeff 展示了一个使用 google plus 登录的演示!真是笑话 !

于 2013-09-22T15:52:53.323 回答
0

设计使您无法轻松地做自己想做的事;您不想对其他人通过您的应用上传到您的帐户的内容负责。完成您所追求的最佳方法是使用Youtube Direct Lite之类的东西- 用户将使用自己的凭据将视频上传到自己的帐户中,但它会自动将这些视频绑定到您在自己的应用程序中运行的播放列表中(它甚至可以让您审查是否应该包含这些视频)。

您还可以推出自己的解决方案来完成相同的方法。相信我......在某些时候你会感激你不能让任何人上传到你的个人帐户!

于 2013-06-25T16:48:19.867 回答
0

这是解决方案:使用 ClientLogin 身份验证。这允许我们通过这一行指定我们的 YT 凭证:

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

注意:第三个参数是我们要连接的服务的“id”

我知道 ClientLogin 已被弃用,但此解决方案有效。如果有任何更安全和干净的解决方案,请告诉我:)

祝你今天过得愉快

于 2013-07-01T13:20:27.553 回答