Power BI中Power Query M调用POST API遇权限报错的求助
解决Power BI中POST API请求的认证冲突问题
错误原因
你遇到的错误是因为Ocp-Apim-Subscription-Key头仅允许在匿名连接时使用,但你同时添加了Authorization头,两种认证方式冲突导致Power BI拦截请求。
解决方案分两种场景处理:
场景1:API仅需Ocp-Apim-Subscription-Key认证
去掉Authorization头,同时指定匿名认证模式,修改后的脚本如下:
let url = "XXXX", // 用Json.FromValue自动生成合规JSON,避免手动写字符串的格式错误 body = Json.FromValue([ limit = 1000, projection = "XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX", group = "XXXX, XXXX, XXXX, XXXX, XXXX, XXXX" ]), Source = Json.Document(Web.Contents(url, [ Headers = [ #"Content-Type" = "application/json", #"Ocp-Apim-Subscription-Key" = "XXXX" ], // 指定匿名认证,满足Subscription Key的使用限制 Authentication = Anonymous ])) in Source
场景2:API仅需Authorization认证
如果API实际要求用Bearer Token等Authorization方式,直接移除Ocp-Apim-Subscription-Key头即可:
let url = "XXXX", body = Json.FromValue([ limit = 1000, projection = "XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX", group = "XXXX, XXXX, XXXX, XXXX, XXXX, XXXX" ]), Source = Json.Document(Web.Contents(url, [ Headers = [ #"Content-Type" = "application/json", Authorization = "XXXX" // 注意格式,比如Bearer 你的令牌 ] ])) in Source
额外注意事项
- 优先使用
Json.FromValue生成请求体,比手动拼接JSON字符串更不容易出现格式错误 - 务必对照API官方文档确认要求的认证方式,不要同时添加两种冲突的认证头
- 如果确实需要同时使用两种头(极罕见场景),可尝试在Power BI选项中开启"允许自定义Web内容",但不推荐,优先遵循API规范
内容的提问来源于stack exchange,提问作者kcdavi01
相关产品推荐
相关产品推荐

