我正在使用翻译程序进行翻译,该程序可能存在歧义 我检查了Google的教程,我可以使用服务帐户的文件轻松调用API,但我有一个新的要求。我需要将其存储在OSS中,类似于Amazon S3存储桶,现在我已经实现了从存储桶中读取服务帐户字典的功能,但是我不能直接利用这个字典进行服务验证
我遇到的问题如下。当我阅读上面的字典文件时,它似乎一直被卡住,我不确定这是什么问题。你能给我一些解决方案吗?
@BlogApp.get("/blogs/uvpvget")
async def GoogleUVPVGet():
async with db_session() as session:
try:
# 从阿里云 OSS 获取 Google Analytics 密钥
jsonkey = AliOssPrivateDocument()
JSON_KEY_FILE = jsonkey.CrawlerKeyAcquisition()
JSON_KEY_FILE_str = JSON_KEY_FILE.decode('utf-8')
# 将 JSON 字符串转换为字典
JSON_KEY_FILE_dict = json.loads(JSON_KEY_FILE_str.replace("'", '"').replace('\r\n', '\\r\\n'))
print(JSON_KEY_FILE_dict)
# 使用适合 Google Analytics 的 OAuth 范围
SCOPES = ['https://www.googleapis.com/auth/analytics']
credentials = service_account.Credentials.from_service_account_info(JSON_KEY_FILE_dict, scopes=SCOPES)
# os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = ""
property_id = "11111111"
# 使用传递的凭据创建客户端
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f'properties/{property_id}', # 替换为你的 GA4 属性 ID
dimensions=[{'name': 'date'}],
metrics=[{'name': 'activeUsers'}, {'name': 'screenPageViews'}],
date_ranges=[{'start_date': '2023-01-01', 'end_date': '2024-12-31'}]
)
response = client.run_report(request=request)
# 初始化一个空字典
uv_pv_data = {}
# 输出 UV 和 PV,并将结果存储到字典中
for row in response.rows:
date = row.dimension_values[0].value
active_users = row.metric_values[0].value
page_views = row.metric_values[1].value
# 将数据存储到字典,日期作为键
uv_pv_data[date] = {
'Active Users (UV)': active_users,
'Page Views (PV)': page_views
}
return {"data": uv_pv_data, "code": 20000}
except GoogleAuthError as auth_error:
return {"error": "Authentication failed", "message": str(auth_error), "code": 40002}
except Exception as e:
return {"error": "Internal Server Error", "message": str(e), "code": 50000}
如果您正在以字典形式读取帐户信息,那么请确保您的字典必须是双引号”,如果您的字典键名是“单引号”,则将无法执行
{
"keyname":"value"
}