'ServiceAccountCredentials.from_json_keyfile_name' эквивалент для удаленного json - PullRequest
1 голос
/ 03 мая 2019

Я настраиваю программу, чтобы помочь пользователю с его заметками для исследовательской работы, и я нахожусь в точке, где мне нужно отделить client_secret.json от файлов программы, чтобы обеспечить ее безопасность в Интернете. Как мне получить кредиты от json, не имея его в виде файла с программой python?

scope = ["https://spreadsheets.google.com/feeds","https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
gs = gspread.authorize(creds)

В приведенном выше коде есть ли способ использовать ответ json вместо файла client_secret.json, что-то вроде:

creds = requests.get("json storage").json

1 Ответ

0 голосов
/ 08 мая 2019

Лучше всего было бы создать ключи вашего секретного JSON в качестве переменных среды и иметь функцию, которая возвращает dict в том же формате json, который вы затем можете использовать с методом auth from_json_keyfile_dict

Вот как я это делаю и как я называю переменные окружения:

def create_keyfile_dict():
    variables_keys = {
        "type": os.environ.get("SHEET_TYPE"),
        "project_id": os.environ.get("SHEET_PROJECT_ID"),
        "private_key_id": os.environ.get("SHEET_PRIVATE_KEY_ID"),
        "private_key": os.environ.get("SHEET_PRIVATE_KEY"),
        "client_email": os.environ.get("SHEET_CLIENT_EMAIL"),
        "client_id": os.environ.get("SHEET_CLIENT_ID"),
        "auth_uri": os.environ.get("SHEET_AUTH_URI"),
        "token_uri": os.environ.get("SHEET_TOKEN_URI"),
        "auth_provider_x509_cert_url": os.environ.get("SHEET_AUTH_PROVIDER_X509_CERT_URL"),
        "client_x509_cert_url": os.environ.get("SHEET_CLIENT_X509_CERT_URL")
    }
    return variables_keys

# then the following should work

scope = ["https://spreadsheets.google.com/feeds","https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_dict(create_keyfile_dict(), scope)
gs = gspread.authorize(creds)


...