Ошибка атрибута облачной функции: у объекта «bytes» нет атрибута «get» при чтении файла json из облачного хранилища - PullRequest
2 голосов
/ 10 февраля 2020

Я пытаюсь прочитать файл ключа JSON из Google Cloud Storage для аутентификации. У меня есть следующая функция:

storage_client = storage.Client()
bucket_name = 'bucket_name'
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.get_blob('key.json')
json_data_string = blob.download_as_string()

credentials = ServiceAccountCredentials.from_json_keyfile_dict(
    json_data_string,
    scopes=['https://www.googleapis.com/auth/analytics',
            'https://www.googleapis.com/auth/analytics.edit'])

и следующая ошибка: AttributeError: 'bytes' object has no attribute 'get'

Как мне прочитать / отформатировать мой key.json файл, чтобы использовать его с ServiceAccountCredentials

1 Ответ

2 голосов
/ 10 февраля 2020

Функция download_as_string() возвращает байты, но from_json_keyfile_dict() ожидает dict. Вам нужно сначала декодировать байты, чтобы превратить его в строку:

json_data_string = blob.download_as_string().decode('utf8')

, а затем загрузить эту строку как dict:

import json
json_data_dict = json.loads(json_data_string)

И затем вы можете вызвать:

credentials = ServiceAccountCredentials.from_json_keyfile_dict(
    json_data_dict,
    scopes=['https://www.googleapis.com/auth/analytics',
            'https://www.googleapis.com/auth/analytics.edit'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...