在SignedJwtAssertionCredentials尝试中的OpenSSL.crypto.Error:[]

时间:2015-07-10 22:34:15

标签: python python-3.x oauth-2.0 google-api-python-client pyopenssl

我尝试使用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_emailpk

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: []没有帮助,因为我的密钥未加密。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在此主题的帮助下:https://github.com/google/oauth2client/issues/193 如果你没有通过\n(gsheets教程那样)加载配置文件,你看起来需要将私钥中的JSON.load转换成真正的换行符。 / p>