有多少用户可以通过Youtube-api上传到我的Youtube频道

时间:2017-03-16 08:48:52

标签: javascript youtube-api

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

2 个答案:

答案 0 :(得分:1)

假设你正在使用Java,就像你说的那样。在对应用程序进行身份验证后,您应该有一个刷新令牌。

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

For Refrence:

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

答案 1 :(得分:0)

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

UploadVideo.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文档

  

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

     

访问令牌会定期到期。如果您请求脱机访问与令牌关联的作用域,则可以刷新访问令牌而不提示用户获得权限(包括用户不在时)。

     

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

     

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

     

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