【问题标题】:Authentication session is not defined未定义身份验证会话
【发布时间】:2018-08-30 08:26:52
【问题描述】:

我尝试使用 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 身份验证会话”。

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

【问题讨论】:

    标签: oauth-2.0 google-photos-api


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复!我使用googleapis.com/auth/photoslibrary,它应该包含追加和读取。但这种情况仍然会发生。 imgur.com/a/ZgcjF3c
    • @user8590209 你找到解决办法了吗?我也有同样的问题。
    • @user1216249 不,我将语言更改为 python,一切正常。我完全不知道为什么以及如何发生这种情况。
    【解决方案2】:

    发生这种情况的一个原因是您最初授权您的用户进行只读访问。如果您使用 .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)
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 2015-05-15
        • 1970-01-01
        相关资源
        最近更新 更多