使用javascript将视频上传到youtube,无需登录谷歌

使用javascript将视频上传到youtube,无需登录谷歌,youtube,google-api,youtube-api,google-oauth,youtube-javascript-api,Youtube,Google Api,Youtube Api,Google Oauth,Youtube Javascript Api,我想允许我网站的访问者将视频上传到我的YouTube频道 我不想强迫访问者登录谷歌 我想上传从访客浏览器直接发送到YouTube使用CORS或类似的。见下面的例子 我不想在我的服务器上处理视频。我不喜欢我的服务器先接收1GB(示例)文件,然后再将其发送到YouTube的想法。这会给我的存储能力和带宽带来压力 下面的例子几乎是完美的 唯一的问题是,它要求用户登录他们的谷歌帐户 我想知道的是,我是否能以某种方式给客户端提供使用我的帐户上传视频的适当凭据 可能吗?我是否可以在服务器端生成某种访问令牌并

我想允许我网站的访问者将视频上传到我的YouTube频道

我不想强迫访问者登录谷歌

我想上传从访客浏览器直接发送到YouTube使用CORS或类似的。见下面的例子

我不想在我的服务器上处理视频。我不喜欢我的服务器先接收1GB(示例)文件,然后再将其发送到YouTube的想法。这会给我的存储能力和带宽带来压力

下面的例子几乎是完美的

唯一的问题是,它要求用户登录他们的谷歌帐户

我想知道的是,我是否能以某种方式给客户端提供使用我的帐户上传视频的适当凭据

可能吗?我是否可以在服务器端生成某种访问令牌并将其发送给客户端,以便客户端可以以我的名义将视频上传到YouTube

是否可以在不让客户执行其他操作(如删除视频/编辑我的帐户等)的情况下完成


这里的例子:

这是可能的。我现在正在建造类似的东西。总体思路是将所有安全机密数据存储在服务器上。(客户端机密、刷新令牌等)

然后,当客户端想要将视频上传到youtube时,您(通过服务器)检查令牌是否已过期(1小时过期时间)

如果有,您需要从youtube请求一个新的访问令牌,然后将其传递回客户端供其使用

我用moment.js来计时,用Meteor.js来做应用,仅供参考

var now=moment();
var结果;
if(now.diff(Meteor.settings.youtube.expiration,'minutes')>=50){
console.log('正在获取新的访问令牌…')
变量选项={
标题:{
“内容类型”:“应用程序/x-www-form-urlencoded”
},
内容:“client_secret=“+Meteor.settings.youtube.client_secret+”&grant_type=refresh_token&refresh_token=“+Meteor.settings.youtube.refresh_token+”&client_id=“+Meteor.settings.youtube.client_id
}
试一试{
结果=HTTP.call(“POST”,”https://www.googleapis.com/oauth2/v3/token",选择),;
Meteor.settings.youtube.access_token=result.data.access_token;
Meteor.settings.youtube.expiration=moment();
返回Meteor.settings.youtube.access\u令牌;
}捕获(e){
//在400或500范围内出现网络错误、超时或HTTP错误。
返回false;
}
}否则{
log('返回访问令牌…')
返回Meteor.settings.youtube.access\u令牌;

}
您确定要允许用户以您的名义发布内容而不必先查看吗?Baum mit Augen:好问题,理想的做法是上传视频,但在查看之前隐藏。这是不可能的;上载要求用户使用其凭据进行身份验证,并将视频上载到自己的帐户。如果没有用户启动的oAuth令牌,则上载API不可用。您可以查看YouTube Direct Lite应用程序,该应用程序让用户将视频上传到自己的帐户,但在您的频道中设置播放列表(视频以私人方式显示在播放列表中,然后您可以查看这些视频,并在准备好后将其激活到您的播放列表中)。用户可以随时删除视频,但YouTube Direct Lite应用程序也会跟踪这些视频。如果你向用户提供访问令牌,他还可以列出你的视频,删除它们等等,不是吗?