云函数属性错误:从云存储读取 json 文件时'bytes'对象没有属性'get'



我正在尝试从Google Cloud Storage读取JSON密钥文件进行身份验证。我有以下功能:

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一起使用

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'])

最新更新