2015-04-22 148 views
3

我跟着this Google video说明书和其他地方的:使用静态API密钥 YouTube数据API V3 - playlistItems返回playlistNotFound

  • 获得播放列表ID为上传的

    • 连接到V3 API频道,使用传统频道ID(例如“GoogleDevelopers”)
    • 使用该播放列表的playlistItems端点来检索上传到该YouTube帐户的视频列表。

    前两个阶段工作,我能够获得信道/播放列表ID,但playlistItems每次都返回playlistNotFound(我曾与几个不同的YouTube帐户进行了测试。)

    我我一直试图仔细检查错别字 - 我找不到任何错误的请求。

    任何想法,或任何人都可以重现该问题?

    API呼叫范例(使用在他们的视频中显示的Google代码信道) - 你需要generate your own API key来测试这一点:

    https://www.googleapis.com/youtube/v3/channels?key=[myAPIkey]&forUsername=GoogleDevelopers&part=id

    响应:

    { 
    "kind": "youtube#channelListResponse", 
    "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/9Uu_LJKSiIBlJOBZoZLkKcjhUUE\"", 
    "pageInfo": { 
        "totalResults": 1, 
        "resultsPerPage": 5 
    }, 
    "items": [ 
        { 
        "kind": "youtube#channel", 
        "etag": "\"IHLB7Mi__JPvvG2zLQWAg8l36UU/JgZIwrlCnsd1wzjssCxaCFp8mRU\"", 
        "id": "UC_x5XG1OV2P6uZZ5FSM9Ttw" 
        } 
    ] 
    } 
    

    试图获取播放列表中的第一个视频:

    https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=1&key=[myAPIkey]&playlistId=UC_x5XG1OV2P6uZZ5FSM9Ttw

    { 
    "error": { 
        "errors": [ 
        { 
        "domain": "youtube.playlistItem", 
        "reason": "playlistNotFound", 
        "message": "Not Found", 
        "locationType": "parameter", 
        "location": "playlistId" 
        } 
        ], 
        "code": 404, 
        "message": "Not Found" 
    } 
    } 
    

    注意:我生成了一个服务器密钥,因为这要在服务器上运行。但我正在浏览器中进行测试(将IP地址列入白名单)。这应该不会造成任何问题吗? (到目前为止,没有认证错误)。

  • +0

    嘿@威廉,即使即时通讯面临同样的问题。你能解决吗? – Adithya

    +0

    @Adithya no - 我最终做的是使用RSS订阅源:https://www.youtube.com/feeds/videos.xml?channel_id=xxxxxxxxxxxxxxxxxxxxxxxx - 我*设法让v3数据API工作来检索具体视频的详细信息,格式如下:\t https://www.googleapis.com/youtube/v3/videos?part=snippet&id=xxxxxxxxxxxxx&key=yyyyyyyyyyyyyyy –

    回答

    1

    William, 您用作播放列表ID的是频道ID,用于获取带有ID的播放列表列表,您需要将contentDetails添加到部件参数中。

    https://www.googleapis.com/youtube/v3/channels?part=contentDetails&maxResults=50&forUsername=GoogleDevelopers&key=<APIKEY> 
    

    响应:

    { 
        kind: "youtube#channelListResponse", 
        etag: ""iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/rGUGLTaUoy_huV1Qfc0wvulpr7M"", 
        pageInfo: { 
        totalResults: 1, 
        resultsPerPage: 50 
        }, 
        items: [ 
        { 
         kind: "youtube#channel", 
         etag: ""iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/Il2dF5SRdky6_tqanN3hNuDyfxc"", 
         id: "UC_x5XG1OV2P6uZZ5FSM9Ttw", 
         contentDetails: { 
         relatedPlaylists: { 
          uploads: "UU_x5XG1OV2P6uZZ5FSM9Ttw" 
         }, 
         googlePlusUserId: "111395306401981598462" 
         } 
        } 
        ] 
    } 
    

    然后使用 “UU_x5XG1OV2P6uZZ5FSM9Ttw” 作为上传播放列表,以便下次调用看起来就像是:

    https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails&maxResults=1&playlistId=UU_x5XG1OV2P6uZZ5FSM9Ttw&key=<APIKEY> 
    

    响应:

    { 
        kind: "youtube#playlistItemListResponse", 
        etag: ""iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/AqAMzBB7CuVjpCKtQDHbbIvjtMU"", 
        nextPageToken: "CAEQAA", 
        pageInfo: { 
        totalResults: 3761, 
        resultsPerPage: 1 
        }, 
        items: [{ 
        kind: "youtube#playlistItem", 
        etag: ""iDqJ1j7zKs4x3o3ZsFlBOwgWAHU/qjqde7mm3USo4TmUrxDN8KdbyaQ"", 
        id: "UUj6hVp42BfAXGn9SkmnI_HudylmOycmdp", 
        contentDetails: { 
         videoId: "tjmRUgUca1g" 
        } 
        }] 
    } 
    
    +0

    我们如何知道id是来自频道或播放列表? 我遇到类似'https:// stackoverflow.com/q/46703569/4680523'的问题 – manish1706

    相关问题