如何在Google Drive API v3中获取首个page token以查询全部变更记录
Google Drive API v3获取全量变更记录解决方案
直接获取全量历史变更方法
Google Drive API v3支持通过传入固定起始页令牌获取全部历史变更,无需提前保存令牌:
将
changes.list接口的pageToken参数设置为字符串"1",即可从第一条历史变更开始返回数据,效果和v2版本直接调用接口获取全部变更完全一致。
Python调用示例如下:
# 已完成OAuth2鉴权,构造好drive_service实例 page_token = "1" full_change_list = [] while page_token: resp = drive_service.changes().list( pageToken=page_token, # 按需指定返回字段,减少请求体积 fields="nextPageToken, changes(id, fileId, time, removed, file)", # 若需要操作共享盘,添加以下两个参数 supportsAllDrives=True, includeItemsFromAllDrives=True ).execute() full_change_list.extend(resp.get("changes", [])) page_token = resp.get("nextPageToken")
备选增量同步方案
如果你的业务不需要拉取历史全量变更,仅需要后续持续监听变更,可采用以下流程实现:
- 首次启动时调用
drive_service.changes().getStartPageToken().execute()获取当前时间点的起始令牌,持久化存储到本地/数据库 - 首次同步直接调用
files.list接口拉取全量文件数据,完成本地初始化 - 后续每次同步时,使用上一次存储的pageToken调用
changes.list拉取增量变更,同步完成后更新存储的pageToken为返回的nextPageToken
注意事项
- 个人盘用户如果不需要访问共享盘,可以省略
supportsAllDrives和includeItemsFromAllDrives参数 - 若返回令牌无效错误,检查鉴权范围是否包含
https://www.googleapis.com/auth/drive等对应权限,确保账号有对应资源的访问权限
内容的提问来源于stack exchange,提问作者TailonR
相关产品推荐
相关产品推荐

