2

谷歌照片最近在 8 月 1 日对他们的 API 进行了更改(我认为)。他们将列表库内容从 POST 更改为 GET。现在我的代码不再有效。 https://developers.google.com/photos/library/guides/list

这是代码的快照:

payload = {"pageSize" : "500", "pageToken" : parsed_json['nextPageToken']}
#payload = {"pageSize" : "500"}
#payload = {"pageToken" : parsed_json['nextPageToken']}
myResponse = requests.get('https://photoslibrary.googleapis.com/v1/mediaItems', headers={"Content-type" : "application/json", "Authorization" : "Bearer " + credentials.access_token}, params=payload)
parsed_json = json.loads(myResponse.content)

此代码给我一个错误:“错误”:{“代码”:400,“消息”:“请求包含无效参数。”,“状态”:“INVALID_ARGUMENT”}

似乎如果我将两个参数传递给 GET 请求,我会收到错误消息。但是,如果我只将一个参数传递给 GET 请求,无论是 pageSize 还是 pageToken,它都可以正常工作。(该代码也包括在内,但被注释掉了)。

这一直很好,直到 8 月 1 日我认为谷歌做出了改变。

鉴于我是一名新程序员,我觉得我在这里遗漏了一些关键,但我根本不知道它是什么。

任何帮助将非常感激!

4

1 回答 1

0

我想我知道你的问题是什么。文档中有一句话说:“nextPageToken 只对同一个请求有效。如果任何参数发生变化,以前使用的 nextPageToken 不应该在同一个请求中使用。”

我遇到了同样的问题,因为我加载的第一个 pageSize 是 500,然后我想加载 200 个项目的页面(以获得更平滑的滚动)。它起初有效,但后来发生了变化,它不再有效(INVALID_ARGUMENT)。

也许您遇到此问题是因为您制作的第一个 GET(给您令牌的那个)与您使用令牌制作的页面大小不同。

顺便说一句,我仍然使用 POST 来列出库内容,因为我会加载专辑内容,而不提供专辑 ID,它似乎工作正常。

于 2018-08-08T13:32:45.197 回答