【发布时间】:2019-09-14 10:10:44
【问题描述】:
我正在尝试使用 youtube API for Channel Memberships (sponsors.list) 对结果列表进行分页,但分页和 PageTokens 似乎没有按预期工作。
我目前正在为用户开发一个应用程序,用于为其频道生成所有会员的列表(使用赞助商列表的 api:https://developers.google.com/youtube/v3/live/docs/sponsors/list)
我有一个测试账号,我已经能够成功拉出列表了。但是,测试帐户只有 5 个会员资格。由于 API 每页最多只能提取 50 个结果,因此我想确保我的应用能够考虑到频道将拥有 50 多个赞助商的可能性。
所以,我将每页的结果设置为只给我 1,理论上给我 5 页,然后我可以筛选以模拟 50 多个成员。
当我尝试对结果进行分页时出现问题......正如 API 所说,我从结果中获取 nextPageToken,并将其传递给 pageToken 参数中的下一个调用。但是,当我这样做时,即使在 API 资源管理器中进行测试,我也会返回一个空列表,并且没有下一页的 nextPageToken。
{
"kind": "youtube#sponsorListResponse",
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/UCSC321uKOiUT6GNkcPmkqoH1sY\"",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 0
},
"items": []
}
另外,如果我传递了一个假的 pageToken,结果就好像我根本没有传递任何令牌,所以它至少可以识别我正在传递的 nextPageToken。
我的谷歌搜索让我失望了,除了打开页面谈论分页应该如何工作......显然不是。难道我做错了什么?还是真的坏了?
编辑
这是我进行的 API 调用。 初始成员列表拉取(获取授权令牌后等)。
'https://www.googleapis.com/youtube/v3/sponsors?part=snippet&filter=all&maxResults=1' \
--header 'Authorization: Bearer [SECRET_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
这会导致:(我已删除敏感信息,例如 [CHANNEL_ID] 等)。
{
"kind": "youtube#sponsorListResponse",
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/PRgb6wjx--gdhgTtZ1auDKOony0\"",
"nextPageToken": "GLiawvDS6uEC",
"pageInfo": {
"totalResults": 5,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#sponsor",
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/LoD6jhrr94l_4soca-7lx14kyRQ\"",
"snippet": {
"channelId": "[CHANNEL_ID]",
"sponsorDetails": {
"channelId": "[CHANNEL_ID]",
"channelUrl": "[CHANNEL_URL]",
"displayName": "[DISPLAY_NAME]",
"profileImageUrl": "[PROFILE_IMAGE_URL]"
},
"sponsorSince": "2019-04-25T06:36:11.677Z"
}
}
]
}
所以我抓住了nextPageToken“GLiawvDS6uEC”,并按照 API 的指示将其放入我的下一次调用中的 pageToken 字段中。
'https://www.googleapis.com/youtube/v3/sponsors?part=snippet&filter=all&maxResults=1&pageToken=GLiawvDS6uEC' \
--header 'Authorization: Bearer [SECRET_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
并以这个令人沮丧的结果结束:
{
"kind": "youtube#sponsorListResponse",
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/UCSC321uKOiUT6GNkcPmkqoH1sY\"",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 0
},
"items": []
}
【问题讨论】:
-
请发布我们在上面看到的 JSON 产生的实际查询序列。注意事项:编辑 API 密钥(这是您的私人数据!)
-
在实际查询中添加
-
我在使用 Google+ API 时遇到了一些类似的问题。
标签: youtube-data-api