尝试从 python 访问电子表格时出现 RefreshError

RefreshError while trying to access spreadsheet from python

我试图按照 this 教程从 python 访问我的传播sheet GetHookedTest。 我已成功添加服务帐户,这是我的凭据。 sheet 与 test@gethooked.iam.gserviceaccount.com

共享
{
  "type": "service_account",
  "project_id": "gethooked",
  "private_key_id": "aaaaaabbbbbaaaabbbbaaaaa",
  "private_key": "Private Key here",
  "client_email": "test@gethooked.iam.gserviceaccount.com",
  "client_id": "454454554",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/orderplacer%test.iam.gserviceaccount.com"
}

import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pprint

scope = ["https://spreadsheets.google.com/feeds",
         'https://www.googleapis.com/auth/spreasheets',
         "https://www.googleapis.com/auth/drive.file",
         "https://www.googleapis.com/auth/drive"]

creds = ServiceAccountCredentials.from_json_keyfile_name("client_secret.json", scope)
client = gspread.authorize(creds)
sheet = client.open("GetHookedTest").sheet1

但是我收到 RefreshError

six.raise_from(new_exc, caught_exc)
  File "<string>", line 3, in raise_from
google.auth.exceptions.RefreshError: ('No access token in response.', {'id_token': 'long string'})

作为一种方法,请尝试以下修改。

  1. 删除 https://spreadsheets.google.com/feedshttps://www.googleapis.com/auth/drive.file 的范围。

  2. 使用电子表格 ID 而不是电子表格名称。

    • 来自

        client.open("GetHookedTest").sheet1
      
    •   client.open_by_key("SpreadsheetId").sheet1
      

注:

  • 开始,https://www.googleapis.com/auth/spreasheetshttps://www.googleapis.com/auth/spreadsheets