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

时间:2014-08-18 15:29:58

标签: youtube google-api youtube-api google-oauth youtube-javascript-api

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

我不想强迫访问者使用Google登录。

我希望使用CORS或类似功能将访问者的浏览器直接发送到YouTube。见下面的例子。

我不想处理我服务器上的视频。我不喜欢我的服务器首先收到1GB(示例)文件然后将其发送到YouTube的想法。它会强调我的存储能力和带宽。

以下示例几乎是完美的。

唯一的问题是它需要用户登录用户的谷歌帐户。

我想知道的是,如果我能以某种方式向客户提供使用我的帐户上传视频的正确凭据。

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

如果不让客户能够执行其他操作(例如删除视频/编辑我的帐户等),是否可以完成?

此处示例:https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html

1 个答案:

答案 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;
}