【问题标题】:Gspread to access google spreadsheet: HttpAccessTokenRefreshError, invalid JWTGspread 访问谷歌电子表格:HttpAccessTokenRefreshError, invalid JWT
【发布时间】:2016-10-09 04:17:37
【问题描述】:

我正在努力使用 gspread 访问带有 python 2.7 的谷歌电子表格。

这是我目前所拥有的:

import gspread
from oauth2client.service_account import ServiceAccountCredentials



scope = ['https://spreadsheets.google.com/feeds']

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'credentials.json', scope)

gc = gspread.authorize(credentials)

wks = gc.open("PracticeOpsBS").sheet1

结果是一堆我认为正在向我展示正在发生的事情的东西,结果如下:

"HttpAccessTokenRefreshError: invalid_grant: Invalid JWT Signature."

最终,我希望从该工作表的两个选项卡中访问信息以进行一些分析,但无法将数据从谷歌提取到 python。任何帮助表示赞赏,我会尽可能回答任何澄清问题!

【问题讨论】:

  • 您的电脑显示的时间是否正确? stackoverflow.com/a/36201957/1388292
  • @JacquesGaudin 计算机时间与 NIST 时间完全吻合
  • 我想您已经尝试过使用不同的 json 文件。您可以添加确切的回溯并检查您的credentials.json 是否有tokenexpired 字段吗?
  • @JacquesGaudin,我是新手。尝试了不同的.json,但没有运气。最终将 oauth2client 降级到 1.5.1 版本并能够进入。感谢您的帮助!
  • 幸好你解决了我对这个有点无能为力。

标签: python google-sheets gspread oauth2client


【解决方案1】:

看起来这是我使用的 oauth2client 版本的问题。为了让事情正常进行,我降级到 oauth2client 版本 1.5.1。然后我使用以下内容访问电子表格:

import json
import gspread
from oauth2client.client import SignedJwtAssertionCredentials

json_key = json.load(open('credentials.json'))
scope = ['https://spreadsheets.google.com/feeds']

credentials = SignedJwtAssertionCredentials(
    json_key['client_email'], json_key['private_key'], scope)


gc = gspread.authorize(credentials)

wks = gc.open('PracticeOpsBS')

【讨论】:

猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 2016-08-09
相关资源
最近更新 更多