为何Google Analytics Admin API忽略gcloud auth激活的服务账号配置?
问题分析与解决
这个问题的核心原因是gcloud激活服务账号时默认的权限范围(scope)不包含Analytics Admin API所需的权限,而通过GOOGLE_APPLICATION_CREDENTIALS环境变量加载凭证时,客户端库会自动为请求的API附加正确的scope。
解决办法
方法1:激活服务账号时指定所需scope
执行激活命令时,显式添加Analytics Admin API需要的scope,比如:
gcloud auth activate-service-account --key-file=mykey --scopes=https://www.googleapis.com/auth/analytics.edit,https://www.googleapis.com/auth/analytics.manage.users
如果只需要读取权限,可以替换为https://www.googleapis.com/auth/analytics.readonly。
方法2:在代码中手动指定scope
如果不想每次激活都加参数,可以在代码里加载gcloud的凭证并手动补充所需scope:
from google.auth import default from google.analytics.admin_v1alpha import AnalyticsAdminServiceClient # 加载gcloud默认凭证并指定需要的scope credentials, _ = default(scopes=["https://www.googleapis.com/auth/analytics.edit"]) client = AnalyticsAdminServiceClient(credentials=credentials, transport=None) res = client.list_access_bindings(parent=f"accounts/{account}")
其他API能正常工作,是因为它们所需的scope刚好在gcloud默认的权限集合里,而Analytics Admin API的特殊权限不在其中,所以才会单独出现这个问题。
内容的提问来源于stack exchange,提问作者red888
相关产品推荐
相关产品推荐

