使用Power Automate调用SharePoint API更新Author字段遇授权错误求助
一、解决"Send an HTTP request to SharePoint"操作的500错误(Authorization头多值)
这个操作本身会自动携带当前Power Automate连接的身份认证头,你手动添加从Azure AD获取的令牌会导致Authorization头重复,触发"不支持多值"的错误。直接按以下方式处理:
- 不要手动添加Authorization头,改用基于Azure AD应用注册的自定义SharePoint连接:
- 在Power Automate中新建SharePoint自定义连接,选择「Azure AD OAuth 2.0」认证方式
- 填入你的Azure应用注册的客户端ID、客户端密钥、租户ID,权限选择SharePoint的
Sites.FullControl.All(或至少Sites.Manage.All,更新Author字段需要高权限) - 用这个自定义连接执行"Send an HTTP request to SharePoint"操作,无需手动配置授权头,操作会自动使用应用身份的令牌发起请求
二、解决普通HTTP操作的401未授权错误
如果改用普通HTTP操作,必须确保以下几点:
- 授权头格式正确:Authorization头必须是
Bearer {你的令牌},注意Bearer后面有空格,示例:Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6... - 令牌权限达标:Azure应用注册需添加SharePoint的应用权限(不是委托权限),且已由管理员同意,推荐权限:
Sites.FullControl.All:完全控制站点,满足修改Author的需求- 或
Sites.Manage.All:管理所有站点内容
- API端点与请求体正确:更新Author字段要用标准的SharePoint REST API端点,示例:
请求体必须传入用户的登录名格式(注意转义双引号):POST https://{tenant}.sharepoint.com/sites/{site}/_api/web/lists/getbytitle('{library}')/items({itemId})/validateUpdateListItem{ "formValues": [ { "FieldName": "Author", "FieldValue": "[{\"Key\":\"i:0#.f|membership|user@domain.com\"}]" } ] } - 令牌受众正确:获取令牌时,资源(resource)必须指定为
https://{tenant}.sharepoint.com,不能用Graph API的https://graph.microsoft.com,否则令牌无法用于SharePoint REST接口
额外验证步骤
- 用Postman测试令牌:将获取到的令牌放入Postman的Authorization头,调用相同的SharePoint API端点,确认是否能成功,排除Power Automate自身的问题
- 检查Azure应用注册的权限状态:在Azure门户的应用注册→API权限中,确认权限已显示「已授予」
内容的提问来源于stack exchange,提问作者wayzz
相关产品推荐
相关产品推荐

