You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用google.auth Python无法登录,auth.valid为False且课程列表为空

问题解决方案

核心问题分析

auth.valid为False说明凭据未正确加载或完成授权,导致API调用缺乏有效权限,最终返回空结果。

具体修复步骤

1. 显式加载凭据并绑定权限范围

google.auth.default()不会自动关联你设置的环境变量凭据和自定义权限范围,需要手动加载凭据并指定scope:

import google.auth
import os
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google.oauth2 import service_account

credentials_path = "./token.json"
scopes = [
    "https://www.googleapis.com/auth/classroom.courses.readonly",
    "https://www.googleapis.com/auth/classroom.courses"
]

# 显式加载服务账号凭据并绑定权限范围
credentials = service_account.Credentials.from_service_account_file(
    credentials_path, scopes=scopes
)

print(credentials.valid)  # 此时应返回True

try:
    service = build('classroom', 'v1', credentials=credentials)
    response = service.courses().list().execute()
    print("获取到的课程:", response.get('courses', []))

except HttpError as error:
    print(f"错误发生:{error}")

2. 检查服务账号权限配置

  • 确认token.json对应的服务账号已被添加到Google Workspace Classroom中,且被授予课程查看/管理的权限。
  • 登录Google Admin控制台,在Classroom权限设置中,将服务账号邮箱添加为管理员或对应权限角色。

3. 验证凭据文件有效性

  • 确认token.json是从Google Cloud控制台正确下载的服务账号密钥,文件未损坏、内容无错误。
  • 用os.path.exists(credentials_path)验证脚本能否读取到该文件,路径是否正确。

4. 确认Classroom API已启用

  • 登录Google Cloud控制台,搜索并确认Classroom API已启用,未启用会直接触发权限类错误。

内容的提问来源于stack exchange,提问作者Azazel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:02:06