Предоставлено для доступа к электронной таблице Google: HttpAccessTokenRefreshError, недействительный JWT

Я изо всех сил пытаюсь получить доступ к электронной таблице Google с Python 2.7 с помощью gspread.

Вот что у меня так далеко:

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."

В конечном счете, я надеюсь получить доступ к информации на двух вкладках этой таблицы, чтобы провести некоторый анализ, но не смог получить данные из Google на python. Любая помощь приветствуется, и я отвечу на любые уточняющие вопросы, как могу!

 Nick10 июн. 2016 г., 22:15
@JacquesGaudin, я новичок во всем этом. Пробовал другой .json без удачи. Закончил понижение версии oauth2client до версии 1.5.1 и смог войти. Спасибо за помощь!
 Nick09 июн. 2016 г., 20:32
@JacquesGaudin Компьютерное время идеально совпадает со временем NIST
 Jacques Gaudin09 июн. 2016 г., 20:13
Ваш компьютер показывает правильное время?stackoverflow.com/a/36201957/1388292
 Jacques Gaudin11 июн. 2016 г., 11:15
Хорошо, что ты решил это, я был немного невежественен об этом.
 Jacques Gaudin10 июн. 2016 г., 02:24
Я предполагаю, что вы уже пытались с другим файлом JSON. Можете ли вы добавить точную трассировку и проверитьcredentials.json заtokenexpired поле?

Ответы на вопрос(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')
 bruntime06 июн. 2017 г., 17:19
Хотя это исправление может работать, SignedJwtAssertionCredentials устарела. Рекомендуется перейти на ServiceAccountCredentials:github.com/google/oauth2client/issues/401

Ваш ответ на вопрос