我想允许网站访问者将视频上传到我的YouTube channel 。
我不想强制访客使用Google登录。
我希望使用CORS或类似工具将上传的内容从访问者浏览器直接发送到YouTube。请参见下面的示例。
我不想在服务器上处理视频。我不喜欢服务器先接收一个1GB(示例)文件,然后将其发送到YouTube的想法。这会增加我的存储能力和带宽。
下面的示例几乎是完美的。
唯一的问题是,它要求用户登录用户的Google帐户。
我想知道的是,是否可以通过某种方式为客户提供适当的凭据,以使用我的帐户上传视频。
那可能吗?我是否可以生成某种访问 token 服务器端并将其发送给客户端,以便客户端可以用我的名字将视频上传到YouTube?
是否可以在不使客户能够执行其他操作(例如删除视频/编辑我的帐户等)的情况下完成?
此处的示例:https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html
最佳答案
有可能的。我目前正在建立类似的东西。通常的想法是,您将所有安全 secret 数据存储在服务器上。 (客户端 secret ,刷新 token 等)
然后,当客户端要将视频上传到youtube时,您(通过服务器)检查 token 是否已过期(过期时间为1小时)。
如果有,则需要从youtube请求一个新的access_token,然后将其传递回客户端以供他们使用。
仅出于您的信息,我正在使用moment.js进行计时,并使用Meteor.js进行应用程序。
var now = moment();
var result;
if (now.diff(Meteor.settings.youtube.expiration, 'minutes') >= 50) {
console.log('Getting new access token...')
var options = {
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
content: "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
}
try {
result = HTTP.call("POST", 'https://www.googleapis.com/oauth2/v3/token', options);
Meteor.settings.youtube.access_token = result.data.access_token;
Meteor.settings.youtube.expiration = moment();
return Meteor.settings.youtube.access_token;
} catch (e) {
// Got a network error, time-out or HTTP error in the 400 or 500 range.
return false;
}
} else {
console.log('Returning access token...')
return Meteor.settings.youtube.access_token;
}
关于youtube - 使用JavaScript将视频上传到youtube,而无需登录google,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25366904/