我正在尝试使用youtube API的频道会员资格(sponsors.list)对结果列表进行分页,但是分页和PageTokens似乎无法正常工作。
我目前正在为用户开发一个应用程序,以生成其频道中所有成员的列表(使用Sponsors.list的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。
我的Google搜索使我失败了,而不仅仅是打开谈论分页应该如何工作的页面……这显然不是。难道我做错了什么?还是真的坏了?
编辑
这是我进行的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"
}
}
]
}
因此,按照API的说明,我抓住了nextPageToken
“ GLiawvDS6uEC”,并将其放入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": []
}
答案 0 :(得分:0)
据我所知,值为GLiawvDS6uEC
的 nextPageToken 是无效的。
我遇到的所有页面令牌都是一种描述的模式,例如由Youtube Data API v3 pageToken for arbitrary page。
API的文档本身并没有说明页面令牌的外观!
也许在这个问题上其他人有更好的内在。无论如何,我建议向Google提交报告。
答案 1 :(得分:0)
因此,事实证明这是API的实际问题。有一个认识Google某人的朋友,他们调查了一下,已解决了问题!现在可以正常工作了!是的!
也就是说,如果我没有这种联系,谁知道这是否可以解决; _;