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

使用Microsoft Graph API更新用户skills/schools时提示租户无SPO许可证错误

解决Microsoft Graph API更新skills/schools字段时的SPO许可证错误

我之前处理过类似的问题,咱们先拆解下你遇到的情况:

你用Graph API的PATCH请求更新自己的用户信息时,修改businessPhones这类基础属性没问题,但更新skills或schools就报错,错误提示明确说了Tenant does not have a SPO license(租户没有SharePoint Online许可证)。

问题根源

这是因为skills、schools、interests这类字段并不是Azure AD的基础用户属性,它们属于SharePoint Online用户配置文件的扩展属性。Graph API在修改这些字段时,会校验租户是否拥有SPO许可证——没有的话就会拒绝请求,而businessPhones、displayName这类是Azure AD原生支持的基础属性,不需要额外许可证就能修改。

解决方案

根据你的需求,有两种处理方式:

  • 方式一:添加SPO许可证
    如果你的业务确实需要使用这些原生字段,那需要给租户购买并分配SharePoint Online相关的许可证(比如Office 365 E3/E5、SharePoint Online Plan 1/2等)。许可证生效后,再重新发送PATCH请求就能正常更新这些字段了。

  • 方式二:使用自定义扩展属性替代
    如果不想为了这几个字段购买SPO许可证,建议用Azure AD的自定义扩展属性来存储技能、学校这类信息。你可以通过Graph API创建自定义扩展,然后用它来替代原生的skills/schools字段,这样就完全不依赖SPO了。

举个例子,创建自定义扩展后,更新请求大概是这样的:

PATCH https://graph.microsoft.com/v1.0/me
Content-Type: application/json

{
  "extension_<your-extension-id>_customSkills": ["Python", "Azure"]
}

附你的请求和错误信息

你的请求示例:

PATCH https://graph.microsoft.com/v1.0/me 
Content-Type: application/json

{ "skills": ["skills-value"] }

返回的错误:

{ "error": { "code": "BadRequest", "message": "Tenant does not have a SPO license.", "innerError": { "request-id": "804948b5-f087-4be8-bdf0-ab49dccf7efc", "date": "2018-04-14T17:55:52" } } }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:46:43