【问题标题】:Delete videos from playlist using YouTube API使用 YouTube API 从播放列表中删除视频
【发布时间】:2018-04-01 19:40:48
【问题描述】:

我正在尝试使用 YouTube API 从我的播放列表中删除一个视频。我通过了正确的身份验证,但仍然收到以下错误:

{
    "code" : 403,
    "errors" : [ {
    "domain" : "youtube.playlistItem",
    "location" : "id",
    "locationType" : "parameter",
    "message" : "Forbidden",
    "reason" : "playlistItemsNotAccessible"
    } ],
"message" : "Forbidden"
}

我正在按照这里的说明进行操作:https://developers.google.com/youtube/v3/docs/playlistItems/delete

但我不明白您应该将播放列表 ID 放在哪里。我知道你把 videoID 放在哪里了,但它怎么知道要从哪个播放列表中删除呢?我认为这是我的问题。这是他们示例中的代码,我的是相同的:

// Sample java code for playlistItems.delete

public static void main(String[] args) throws IOException {
    YouTube service = getYouTubeService();
    try {
        HashMap<String, String> parameters = new HashMap<>();
        parameters.put("id", "REPLACE_ME");
        parameters.put("onBehalfOfContentOwner", "");

        YouTube.PlaylistItems.Delete playlistItemsDeleteRequest = youtube.playlistItems().delete(parameters.get("id").toString());
        if (parameters.containsKey("onBehalfOfContentOwner") && parameters.get("onBehalfOfContentOwner") != "") {
            playlistItemsDeleteRequest.setOnBehalfOfContentOwner(parameters.get("onBehalfOfContentOwner").toString());
        }

        playlistItemsDeleteRequest.execute();
    }
}

在页面上的“尝试”部分中甚至没有输入播放列表 ID,这也给出了相同的错误。只是 onBehalfOfContentOwner 和 id。输入 videoID 并在页面上执行后,我得到了同样的错误。我应该把播放列表ID放在哪里?

【问题讨论】:

  • 当您从SO查看comment in the post时,据说您不能对其他播放列表进行任何更改或更改。除非该用户授予您的应用程序许可,否则无法更新(插入/删除)来自其他用户播放列表的视频。检查此documentation 以获取错误描述。
  • 我试图从我自己的播放列表中删除一个视频,并且我已通过正确的身份验证(我可以添加视频就好了)。不过,我想通了。我很快就会在这里发布答案。基本上,我使用了错误的 videoId。当您播放视频时,我试图使用您在 url 中看到的简短内容。您需要使用从 PlaylistItems.list 返回的那个。

标签: youtube-api youtube-data-api android-youtube-api


【解决方案1】:

想通了。并澄清一下:我试图从我自己的播放列表中删除一个视频,并且我已通过正确的身份验证(我可以添加视频就好了)。

基本上,我使用了错误的 videoId。当您播放视频时,我试图使用您在 url 中看到的短视频(例如 qNqfYtd3HTg)。您需要改用从 PlaylistItems.list 返回的那个(例如 UEwzdmpFaWdSbm5rQ3hPN29qNXFjM1c0c20zNVlRSC1hQi5DNUEzOUFFNkIyOUUzOTRC)。后者包括有关视频所在的播放列表的信息。这就是为什么您在从播放列表中删除视频时不需要指定 playlistId,只需指定一个长 videoId。

这是从播放列表中删除视频时不使用的 videoId:

youtube.playlistItems().list("contentDetails,snippet").execute().items[0].snippet.resourceId.videoId

这是要使用的 videoId:

youtube.playlistItems().list("contentDetails,snippet").execute().items[0].id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 2014-02-07
    • 2012-12-11
    • 2018-06-24
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多