我希望允许我网站的访问者将视频上传到我的YouTube频道。
我不想强迫访问者使用Google登录。
我希望使用CORS或类似功能将访问者的浏览器直接发送到YouTube。见下面的例子。
我不想处理我服务器上的视频。我不喜欢我的服务器首先收到1GB(示例)文件然后将其发送到YouTube的想法。它会强调我的存储能力和带宽。
以下示例几乎是完美的。
唯一的问题是它需要用户登录用户的谷歌帐户。
我想知道的是,如果我能以某种方式向客户提供使用我的帐户上传视频的正确凭据。
这可能吗?我是否可以生成某种访问令牌服务器端并将其发送给客户端,以便客户端可以以我的名义将视频上传到YouTube?
如果不让客户能够执行其他操作(例如删除视频/编辑我的帐户等),是否可以完成?
此处示例:https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html
答案 0 :(得分:0)
有可能。我现在正在建造类似的东西。一般的想法是您将所有安全机密数据存储在服务器上。 (客户端密钥,刷新令牌等)
然后,当客户想要将视频上传到youtube时,您(通过服务器)检查令牌是否已过期(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;
}