我正在使用Python googleapiclient加载返回列表的下一页。我的第一个查询返回nextPageToken:
videos = api_service.search().list(
part='snippet',
maxResults=20,
forMine=True,
type='video').execute()
返回的页面令牌看起来像这样:
'nextPageToken': 'Cib39GFvs_____81QzNjeU5TRXRMTQD_Af_-NUMzY3lOU0V0TE0AARAUIdZeR03mYiWvOQAAAABMkJ4LSAFQAloLCc8daUP6sg3iEAJgjv3Z_gQ='
在我发现的所有文档中,页面令牌几乎总是6个字符串,例如:CA8QAA
。
当我再次查询发送返回给我的pageToken时,我得到了相同的初始视频结果:
videos = api_service.search().list(
part='snippet',
maxResults=20,
pageToken=request.GET.get('next_page_token'),
forMine=True,
type='video').execute()
可能是什么原因造成的?
答案 0 :(得分:0)
我知道了。请注意,令牌=
末尾的符号...Jgjv3Z_gQ=
。
令牌已正确地传递给客户端。但是,一旦我尝试执行GET,=
就会转换为Unicode %3D
我的解决方案是不从客户端获取令牌。相反,我将它作为字符串加载到服务器会话中,并直接通过googleapiclient
库传递。
我的代码现在显示为:
if request.GET.get('next_page_token'):
page_token = request.session['next_page_token']
else:
page_token = ''
videos = api_service.search().list(
part='snippet',
maxResults=50,
pageToken=page_token,
forMine=True,
type='video').execute()
try:
request.session['next_page_token'] = videos['nextPageToken']
except KeyError:
pass