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

Graph API报错:Content type text/html无解析工厂注册,请求协助解决

解决“Content type text/html does not have a factory registered to be parsed”错误

这个错误的核心原因是Microsoft Graph API返回了HTML格式的错误页面(而非SDK预期的JSON响应),导致SDK无法解析内容。以下是针对性的修复步骤:

1. 填充有效的用户ID

代码中by_user_id("")传入了空字符串,这会导致请求无效并返回错误页面。必须替换为目标用户的**用户主体名称(UPN,如user@yourdomain.com)**或Azure AD用户ID。

2. 检查应用权限配置

使用ClientSecretCredential时,Azure AD应用需要配置应用权限(而非委派权限),且需完成管理员同意:

  • 登录Azure门户,找到你的应用注册
  • 进入“API权限”,添加Microsoft Graph的应用权限,如Mail.Read或Mail.ReadBasic
  • 点击“授予管理员同意”,确保权限生效

3. 验证认证有效性

先单独测试凭证是否能获取有效令牌,排除认证问题:

from azure.identity import ClientSecretCredential

tenant_id = "你的租户ID"
client_id = "你的客户端ID"
client_secret = "你的客户端密钥"

credential = ClientSecretCredential(tenant_id, client_id, client_secret)
token = credential.get_token("https://graph.microsoft.com/.default")
print("获取到的令牌:", token.token)

如果令牌获取失败,检查tenant_id、client_id、client_secret是否正确,以及应用是否在对应租户中注册。

4. 捕获异常查看具体错误信息

添加异常捕获逻辑,打印原始响应内容,明确错误原因:

from kiota_abstractions.api_error import APIError
import asyncio

async def get_user():
    try:
        result = await client.users.by_user_id("user@yourdomain.com").messages.get(request_configuration=request_configuration)
        print(result)
    except APIError as e:
        print(f"API错误信息: {e.error.message}")
        print(f"响应状态码: {e.response.status_code}")
        print("原始响应内容:", await e.response.text())
    except Exception as e:
        print(f"意外错误: {str(e)}")

asyncio.run(get_user())

通过原始HTML内容可以直接看到具体错误(如权限不足、用户不存在等),进一步定位问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:42:03