5

我尝试使用 Google Photos API 上传我的图片,基于以下链接的步骤。

https://developers.google.com/photos/library/guides/upload-media

在遵循Using OAuth 2.0 for Web Server Applications之后,我只得到了 Oauth2.0_token 响应(带有 access_token、refresh_token ... 的 JSON 格式)。但是,在我将此带有“Bearer”的令牌字符串放入请求标头后,响应为错误 401,错误消息为“未定义代码 16 身份验证会话”。

我找不到任何信息来处理它,感谢您的帮助。

4

3 回答 3

2

您可能拥有不正确的权限。确保您请求具有适当范围的令牌。对于只写访问,您需要“ https://www.googleapis.com/auth/photoslibrary.appendonly

来源:https ://developers.google.com/photos/library/guides/authentication-authorization#what-scopes

于 2018-08-30T20:34:24.167 回答
0

您说您“只需获取 Oauth2.0_token 响应(带有 access_token、refresh_token ... 的 JSON 格式)”并“将带有“Bearer”的令牌字符串放入请求标头中”。

不幸的是,这方面的文档在很多地方都不是很清楚。您应该在“Bearer”之后提供的只是“access_token”字段,而不是包含所有令牌字段的整个 JSON 字符串。作为参考,这是一串随机的字符,可能以“ya29”开头。而且很长——在我的例子中是 170 个字符。

于 2020-04-24T01:09:52.893 回答
0

发生这种情况的一个原因是您最初授权您的用户进行只读访问。如果您通过 .readonly 范围的授权流程,您的不记名令牌会反映该授权(并且该令牌保留在您的凭证文件中)。如果您更改范围但没有获得新的身份验证令牌,您将在尝试上传时收到此错误。只需使用定义的新范围重做授权流程:

SCOPES = 'https://www.googleapis.com/auth/photoslibrary'
store = file.Storage('path_to_store')
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('google_credentials.json', SCOPES)
    creds = tools.run_flow(flow, store)

并且您的商店将使用可用于上传的新令牌填充。

于 2019-03-11T15:33:30.837 回答