1

Я пытаюсь войти с SignedJwtAssertionCredentials, чтобы получить gspread для работы. Я следил за указаниями here с примечаниями для python3. Вот мой класс:OpenSSL.crypto.Error: [] в попытке SignedJwtAssertionCredentials

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 аутентификации JSon файла:

export GOOGLE_SPREADSHEET_PK="-----BEGIN PRIVATE KEY-----\n...\n...keystuff...\n...\n-----END PRIVATE KEY-----\n" 

It ошибок из каждая попытка с OpenSSL.crypto.Error: []

Предложение здесь Loading private key fails with OpenSSL.crypto.Error: [] не помогло, так как мой ключ не зашифрован.

Любые предложения?

ответ

2

С некоторой помощью этой нити: https://github.com/google/oauth2client/issues/193 и некоторые пустячный, это выглядит, как вам нужно, чтобы превратить \n «S в приватного ключа в реальные символы новой строки, если вы не загружается файл конфигурации, хотя JSON.load (который gsheets tutorial делает.)

+1

Я нашел этот ответ (http://stackoverflow.com/a/25435674/888970), чтобы быть полезным для иллюстрации того, что подразумевается под использованием 'json.load'. –

+0

Этот ответ был ключевым. – Michael