【问题标题】:Is there any way that multiple users can upload to my Youtube channel via Youtube-api有什么方法可以让多个用户通过 Youtube-api 上传到我的 Youtube 频道
【发布时间】:2017-03-16 08:48:51
【问题描述】:

我已经使用了 Youtube-api 并且还为一些演示项目创建了 oauth-clientId。我还使用客户端库(java 和 javascript)将视频上传到我的频道,我成功了。但我不想分享我的登录凭据,也不想让我的客户用户将视频上传到我的频道。有什么办法吗,我的意思是文档或程序或 youtube 实现?

【问题讨论】:

  • 将您的凭据存储在服务器上。让用户将文件发送到服务器,然后服务器将调用 youtube api。
  • @DaImTo 谢谢 - 我不知道。评论已删除。
  • 如果没有一些服务器端代码来帮助它,没有办法真正安全地做到这一点。问题是,如果您可以简单地使用客户端的 API 代码上传视频,那么任何人都可以随时使用该代码以您的名义上传任何内容。服务器端代码将使您能够对其进行一些过滤控制。
  • @TahirHussainMir 如果可能的话,您将失去对 YouTube 帐户的控制权,而这违反了 YouTube 的 ToS。
  • @TahirHussainMir 是的,完全正确。

标签: javascript youtube-api


【解决方案1】:

假设您按照您所说的那样使用Java。在您的应用程序通过身份验证后,您应该有一个刷新令牌。

刷新令牌可用于请求新的访问令牌。您应该使用此刷新令牌来允许其他人上传到您的频道。注意:据我所知,由于安全问题,您无法使用 JavaScript 客户端库获取刷新令牌。您需要使用服务器端语言来执行此操作。

供参考:

YouTube 不支持服务帐户,因此无法使用。 API Key 仅用于访问公共数据,因此也不起作用。

【讨论】:

  • 如果是 javascript。你的意思是我必须保存那个刷新令牌,然后让他们上传。如果令牌过期了怎么办?
  • 我的意思是使用客户端语言的身份验证不会返回刷新令牌。因此,如果您的访问令牌过期,您将需要亲自再次对其进行身份验证。
  • 感谢您的回复。我会看看它。 ^_^ @DalmTo
【解决方案2】:

我终于找到了我的问题的答案,现在我的用户 [我给予了一些授权] 可以直接上传到我的 youtube 频道。
根据我收到的关于我的问题的 cmets,我得出的结论是,由于安全问题,我必须在服务器端执行此操作。
来救援的是Refresh Token。 我首先创建了一个简单的应用程序,通过它我将视频 [不需要上传] 登录并上传到我的 youtube 帐户中,并收到了受人尊敬的 refresh token
然后我保存了刷新令牌,通过它我手动创建了一个Credential 对象。
您可以查看google提供的代码:

上传视频.java

Credential credential = Auth.authorize(scopes, "uploadvideo");

这是我用this 替换并获得了我自己的刷新令牌。

刷新令牌不会像普通访问令牌一样过期,并且用于在需要时生成普通访问令牌。所以,刷新令牌是我问题的关键

然后在后端,您唯一需要做的就是手动创建Credential。您可以使用此代码

getCredential = new GoogleCredential.Builder()
.setJsonFactory(JSON_FACTORY)
.setTransport(HTTP_TRANSPORT)
.setClientSecrets(clientId, clientSecret)
.build()
.setRefreshToken(refreshToken)
// The refresh token here will be the same you received offline.

这是关于这个概念的官方谷歌文档

刷新访问令牌(离线访问)

访问令牌会定期过期。如果您请求对与令牌关联的范围进行离线访问,则可以在不提示用户许可的情况下刷新访问令牌(包括当用户不存在时)。

如果您使用 Google API 客户端库,只要您将该对象配置为离线访问,客户端对象就会根据需要刷新访问令牌。 如果您不使用客户端库,则需要在将用户重定向到 Google 的 OAuth 2.0 服务器时将 access_type HTTP 查询参数设置为离线。在这种情况下,当您将授权代码换成访问令牌时,Google 的授权服务器会返回一个刷新令牌。然后,如果访问令牌过期(或在任何其他时间),您可以使用刷新令牌来获取新的访问令牌。

请求离线访问是任何需要在用户不在场时访问 Google API 的应用程序的要求。例如,在预定时间执行备份服务或执行操作的应用程序需要能够在用户不存在时刷新其访问令牌。默认的访问方式称为在线。

服务器端 Web 应用程序、已安装的应用程序和设备都在授权过程中获取刷新令牌。刷新令牌通常不用于客户端 (JavaScript) Web 应用程序。

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2012-06-25
    • 2013-12-16
    • 2019-02-28
    • 2015-07-12
    • 2013-08-27
    • 1970-01-01
    • 2019-10-06
    • 2015-02-15
    相关资源
    最近更新 更多