经过几个小时的搜索,我还没有找到解决方案。 我找到的最相关的帖子是:Youtube API : Service account
根据Google文档的这一部分: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帐户登录...
通过在代码中输入我自己的凭据来绕过此登录请求的任何方法吗?
抱歉英语不太好,谢谢。
答案 0 :(得分:2)
Eric,如果您使用浏览器上传API(V2)https://developers.google.com/youtube/2.0/developers_guide_protocol_browser_based_uploading,则可以这样做。但是它并不完全支持CORS,这意味着您无法显示进度条,必须使用iframe来处理浏览器重定向。 Youtube fixed V3中的CORS问题,但他们不再支持基于浏览器的上传,所以他们很糟糕,你必须选择通过服务器代理视频上传(我这样做)或要求用户登录他们的谷歌帐户。我认为他们是故意推广加服务。在他们'修复'(花了大约一年)后,一个人@jeff展示了使用google plus登录的演示!真是个笑话!
答案 1 :(得分:0)
按照设计,你不能轻易做到你想要的东西;您不希望对其他人通过您的应用上传到您帐户的内容负责。完成所需内容的最佳方法是使用Youtube Direct Lite之类的内容 - 用户会使用自己的凭据将视频上传到自己的帐户中,但它会自动将这些视频绑定到您运行的播放列表中自己的应用程序(它甚至可以让您查看是否应包含这些视频的功能)。
您也可以推出自己的解决方案,以实现相同的方法。相信我......在某些时候,你会感激你不能让任何人上传到你的个人账户!
答案 2 :(得分:0)
以下是解决方案:使用ClientLogin身份验证。 这允许我们通过这一行指定我们的YT凭证:
$httpClient = Zend_Gdata_ClientLogin::getHttpClient($youtubeEmail, $youtubePassword, 'youtube');
注意:第三个参数是我们要连接的服务的“id”
我知道ClientLogin已弃用,但此解决方案有效。如果有任何解决方案更加安全和清洁,请告诉我:)。
度过愉快的一天