【问题标题】:Upload video to YouTube with a service account on behalf of a user by server side data API V3通过服务器端数据 API V3 代表用户使用服务帐户将视频上传到 YouTube
【发布时间】:2016-06-25 07:49:35
【问题描述】:

我正在尝试通过 YouTube 数据 API V3 代表“user@gmail.com”将视频上传到 YouTube 帐户,但收到“access_denied”错误。 根据谷歌文档:

  1. 我使用 google 管理员帐户“admin@gmail.com”开设了一个服务帐户,并完成了以下步骤:www.developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority。

  2. 我以“user@gmail.com”身份登录并授予了我在步骤 1 中创建的“admin@gmail.com”服务帐户的权限。 (在 www.console.developers.google.com/permissions/projectpermissions 'permissions' 标签 => 'add members')add member

这是我的请求(JAVA):

 youtube = new YouTube.Builder(
            GoogleAuthImpl.HTTP_TRANSPORT,
            GoogleAuthImpl.JSON_FACTORY,
            new GoogleCredential.Builder()
                    .setTransport(HTTP_TRANSPORT)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId("my-service-account@test.com")
                    .setServiceAccountPrivateKeyFromP12File(new File("my-service-account.p12"))
                    .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
                    .setServiceAccountUser("user@email.com")
                    .build()
    )
            .setApplicationName("My App")
            .build();

这是回复:com.google.api.client.auth.oauth2.TokenResponseException: 403 Forbidden { "error" : "access_denied", "error_description" : "Requested client not authorized." } at com.google.api.client.auth.oauth2.TokenResponseException.from(TokenResponseException.java:105) at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:287) at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307) at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:384) at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489) at com.google.api.client.auth.oauth2.Credential.intercept(Credential.java:217) at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859) at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)

是否可以代表用户上传视频?我做错了吗?

另外,我发现了一个指向 YouTube 数据 API - Oauth 2.0 流的链接,它可能表明不支持此操作(代表另一个用户通过服务帐户导出到 YouTube):www.developers.google.com/youtube /v3/guides/authentication#OAuth2_Flows

非常感谢您的回复!

【问题讨论】:

    标签: java api youtube-api youtube-data-api google-oauth


    【解决方案1】:

    YouTube API 不支持您需要使用 Oauth2 的服务帐户。

    【讨论】:

    • @DalmTo 您能否分享任何资源以参考使用 Oauth2 从服务器更新 youtube 视频标题
    • 我没有 java 的能力对不起我几年前用 c# 做到了。
    猜你喜欢
    • 2019-01-11
    • 2016-06-05
    • 2015-02-20
    • 2015-05-14
    • 2013-07-03
    • 2016-08-22
    • 2014-06-23
    • 2014-02-01
    • 2014-10-17
    相关资源
    最近更新 更多