【问题标题】:Uploading videos to specific Google account through YouTube API通过 YouTube API 将视频上传到特定的 Google 帐户
【发布时间】:2013-06-22 12:40:48
【问题描述】:

经过几个小时的搜索,我还没有找到解决方案。 我发现的最相关的帖子是:Youtube API : Service account

根据谷歌文档的这一部分: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 帐户登录...

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

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

【问题讨论】:

    标签: php youtube-api oauth-2.0 service-accounts


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 对不起,但这不是问题......我需要这样做,所以这就是我想要的。为了防止洪水上传,我设置了安全性,可以在上一次上传后每 10 分钟上传一个视频。不过,谢谢你的回答
      • @jlmcdonald 有些人没有谷歌帐户,或者只是不想通过 100 个网站登录来完成任务。您可以使用 youtube API 预先批准视频。
      • 但是,如果您自己依赖预先批准的视频,您仍然需要承担责任,因此,如果有版权主张,您就会陷入困境。如果每个人都上传到自己的帐户,他们将承担责任。仅仅因为用户不想注册免费帐户,这似乎是一件非常冒险的事情......如果开发人员愿意承担这种责任,那么他/她可能会更好地使用不同的主机解决方案,不是吗?
      • 不幸的是,没有像 youtube 这样的其他托管解决方案。编码太贵了,更不用说带宽成本了,我怀疑性能会接近 youtube。我想你会尽力过滤版权材料,如果你的频道上有版权视频,你就不会真正看到悲剧。它可以根据要求删除,对吗?百万分之一是可以接受的。毕竟 Youtube 本身在处理版权材料方面也做得不好。
      【解决方案3】:

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

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

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

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

      祝你有美好的一天

      【讨论】:

      • 我怀疑有人会给你他的谷歌密码(访问他的电子邮件、youtube 和许多其他服务)。
      • 重点是通过我的“公共”谷歌帐户上传用户视频。所以我只需要输入我的密码:)
      • 这不是在 youtube api v3 上被弃用的吗?所以这不会工作.. 会吗? @EricMartin
      • @DavidMauricio 是的。但正如 mihai 在之前的回答中所说,youtube 修复了 V3 中的 CORS 问题,但它们不再支持基于浏览器的上传。自从我读到那篇文章后,我不得不转向 V2 api 以满足我的需求,所以它正在工作。抱歉回复晚了!
      猜你喜欢
      • 2016-08-22
      • 2014-06-23
      • 2021-07-29
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 2020-07-13
      相关资源
      最近更新 更多