我尝试使用SignedJwtAssertionCredentials登录以使gspread正常工作。我已经按照here的说明使用了python3的注释。这是我的班级:
import json
import gspread
from oauth2client.client import SignedJwtAssertionCredentials
class GoogleSpreadsheet():
def fetch(self):
gc = gspread.authorize(self.credentials)
wks = gc.open("TEST of Sheet (Responses)").sheet1
print(wks)
def __init__(self, client_email,pk):
scope = ['https://spreadsheets.google.com/feeds']
self.credentials = SignedJwtAssertionCredentials(client_email, bytes(pk, 'utf-8'), scope)
从环境变量传递client_email
和pk
:
gs = GoogleSpreadsheet(app.config.get('GOOGLE_SPREADSHEET_CLIENT_EMAIL'), app.config.get('GOOGLE_SPREADSHEET_PK'))
环境变量是从google auth json文件中复制的:
export GOOGLE_SPREADSHEET_PK="-----BEGIN PRIVATE KEY-----\n...\n...keystuff...\n...\n-----END PRIVATE KEY-----\n"
使用OpenSSL.crypto.Error: []
此处的建议Loading private key fails with OpenSSL.crypto.Error: []没有帮助,因为我的密钥未加密。
有什么建议吗?
答案 0 :(得分:2)
在此主题的帮助下:https://github.com/google/oauth2client/issues/193
如果你没有通过\n
(gsheets教程那样)加载配置文件,你看起来需要将私钥中的JSON.load
转换成真正的换行符。 / p>