Google Auth报错:'Credentials'对象无'keys'属性,求技术解决方案
GCP认证代码错误修复建议
错误原因
google.auth.default()返回的creds已经是一个Credentials对象,但Credentials.from_authorized_user_info()方法要求传入的是包含授权用户信息的字典(例如从JSON文件读取的内容)。你直接将Credentials对象传入该方法,由于对象没有字典的keys()方法,因此触发了AttributeError。
修正方案
如果你是想使用本地默认认证(比如gcloud CLI登录凭据、服务账号密钥等),直接使用google.auth.default()返回的creds即可,无需额外转换:
import google.auth from googleapiclient.discovery import build # Set up the credentials creds, project = google.auth.default() # 直接使用creds调用GCP服务,示例如下 service = build('your-service-name', 'v1', credentials=creds)
特殊场景处理(若需从授权用户信息创建凭据)
如果你的业务场景需要从JSON格式的授权用户信息创建凭据(比如读取本地的authorized_user.json文件),正确写法如下:
import json from google.oauth2.credentials import Credentials # 从JSON文件加载授权用户信息为字典 with open('path/to/authorized_user.json') as f: user_auth_info = json.load(f) # 用字典创建Credentials对象 creds = Credentials.from_authorized_user_info(info=user_auth_info)
内容的提问来源于stack exchange,提问作者Mohit Reddy
相关产品推荐
相关产品推荐

