GSpread передать учетные данные из Python, а не JSON - PullRequest
0 голосов
/ 19 сентября 2018

Я использую GSpread, пытаясь передать содержимое моего файла JSON (учетные данные приложения-службы Google API) в качестве словаря python в моем сценарии.Я пытаюсь не носить файл JSON, где я беру свой сценарий.

Я получаю следующую ошибку при попытке передать словарь вместо файла json в следующей строке:

credentials = ServiceAccountCredentials.from_json_keyfile_name(auth_gdrive(), scope)

TypeError: ожидаемый объект str, bytes или os.PathLike, а неset

### auth_gdrive() returns a dictionary like this:

def auth_gdrive():
    dic = {
        "type": "miauuuuuu",
        "pass": "miauuuu"
    }

Я не позволяю показывать, что на самом деле в дисках.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Поскольку я хотел передать учетные данные из моего приложения, а не из файла json, я не мог использовать:

ServiceAccountCredentials.from_json_keyfile_name()

from_json_keyfile_name () ожидает файл json,Но, просматривая документы, я нашел следующее:

ServiceAccountCredentials.from_json_keyfile_dict()

Это будет ожидать объект dict, это все, что мне нужно.

Ссылка:

https://oauth2client.readthedocs.io/en/latest/source/oauth2client.service_account.html

Спасибо всем еще раз

0 голосов
/ 20 сентября 2018

Поскольку вы используете ServiceAccountCredentials, я предполагаю, что вы используете OAuth2 для авторизации.Вы можете пропустить файл json, используя oauth2client.SignedJwtAssertionCredentials, чтобы создать соответствующий объект учетных данных и передать его gspread.authorize.

import gspread
from oauth2client.client import SignedJwtAssertionCredentials

credentials = SignedJwtAssertionCredentials(service_account_name, private_key.encode(), 
                                            ['https://spreadsheets.google.com/feeds'])
gclient = gspread.authorize(credentials)

ОБНОВЛЕНИЕ: Похоже, что oauth2client.SignedJwtAssertionCredentials устарел в пользу oauth2client.service_account.ServiceAccountCredentials, который поддерживает только ключевые файлы json и p12.

...