首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >YouTube API v.3和GoogleCredential (OAuth2):当createPlaylist或uploadVideo时,YouTube凭据获得“不足的权限”

YouTube API v.3和GoogleCredential (OAuth2):当createPlaylist或uploadVideo时,YouTube凭据获得“不足的权限”
EN

Stack Overflow用户
提问于 2013-10-23 21:41:26
回答 1查看 2K关注 0票数 1

当我使用谷歌的YouTube API (第3版)搜索视频时,下面的代码做得很好,但在尝试时失败了:

代码语言:javascript
运行
复制
Playlist youTubePlaylist = new Playlist();
youTubePlaylist.setSnippet(playlistSnippet);
youTubePlaylist.setStatus(playlistStatus);
YouTube.Playlists.Insert command = youTube.playlists().insert("snippet,status", youTubePlaylist);
youTubePlaylist.setKey("AI...1IU");
youTubePlaylist.execute();

在凭据步骤中,我确实得到了一个accessToken,但是youTubePlaylist.execute()会发生故障:

代码语言:javascript
运行
复制
{
  "access_token" : "ya29...DSoQ",
  "expires_in" : 3600,
  "token_type" : "Bearer"
}

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Insufficient Permission",
    "reason" : "insufficientPermissions"
  } ],
  "message" : "Insufficient Permission"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:312)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1049)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
    at ...publication.youtube.YouTubeAPIVersion3Connector.execute(YouTubeAPIVersion3Connector.java:107)
    at ...publication.youtube.YouTubeAPIVersion3ServiceImpl.createPlaylist(YouTubeAPIVersion3ServiceImpl.java:119)

身份验证的步骤如下:

代码语言:javascript
运行
复制
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
File privateKeyP12 = new File(getYouTubeConfigDirectory(), "/private-key-youtube-v3.p12");
GoogleCredential credential = new GoogleCredential.Builder()
 .setTransport(httpTransport)
 .setJsonFactory(jsonFactory)
 .setServiceAccountId("99...@developer.gserviceaccount.com")
 .setServiceAccountScopes(Collections.list(YouTubeScopes.YOUTUBE_READONLY, YouTubeScopes.YOUTUBE_UPLOAD))
 .setServiceAccountPrivateKeyFromP12File(privateKeyP12)
 .setClientSecrets("9...42.apps.googleusercontent.com", "DH...w8")
 .setRefreshListeners(getRefreshListeners())
 .build();
}
return new YouTube.Builder(httpTransport, jsonFactory, credential).setApplicationName(googleAppAccountName).build();

请记住,我不是代表另一个用户执行YouTube操作。我的网络应用程序正在管理它自己的YouTube频道上的视频。我已经做过的事:

  • 通过Google控制台,我启用了YouTube v3 API,创建了一个具有编辑权限的应用程序
  • 我生成了p12私钥文件,由上面的代码加载。
  • 我在所有操作中都使用API键。

我遗漏了什么?例如:-我该如何处理谷歌云控制台提供的公钥指纹?-我是否正确地将setServiceAccountScopes()设置为只有YouTubeScopes.YOUTUBE_READONLY和YouTubeScopes.YOUTUBE_UPLOAD?-除了在云控制台上为电子邮件: 99...91i@developer.gserviceaccount.com设置"Can Edit“之外,还有什么方法可以控制权限吗?

我感到沮丧的部分原因是,YouTube v3 API站点提供的所有代码示例都涉及到一个“无头”的AWT工具包。我的应用程序只想使用自己的YouTube帐户进行身份验证。

谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2013-10-23 23:40:27

Data v3中不支持服务帐户。请在云控制台中创建一个项目id,并使用您的客户端机密和id。

尽管我们意识到了这一需求,但我们目前还没有关于这一可用性的消息。

这里是我们的Java示例,可以指导您

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19552843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档