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

从Microsoft Graph API导入Power BI遇URI错误及凭证配置问题

Power BI通过M函数调用Microsoft Graph API的错误解决与凭证配置指南

一、解决URI错误

  • 错误原因:你在M函数里误用了需要相对URI的函数(比如Uri.Combine),但传入了完整的绝对URL(https://graph.microsoft.com/v1.0/users),导致系统无法生成相对URI触发报错。
  • 修复方法:直接将完整URL作为请求地址使用,不要嵌套到需要相对路径的函数中。比如之前如果写了Uri.Combine("https://graph.microsoft.com", "https://graph.microsoft.com/v1.0/users"),改成直接用"https://graph.microsoft.com/v1.0/users"即可。

二、正确的凭证配置与API请求流程

你手里的Client ID、Tenant ID、Secret Key需要通过客户端凭证流获取访问令牌,再用令牌调用Graph API,具体步骤如下:

1. 编写M函数获取访问令牌

在Power BI高级编辑器中创建一个查询(比如命名为GetAccessToken),代码如下:

let
    // 替换成你的实际凭证
    TenantID = "你的Tenant ID",
    ClientID = "你的Client ID",
    ClientSecret = "你的Secret Key",
    // Azure AD令牌请求端点
    TokenEndpoint = "https://login.microsoftonline.com/" & TenantID & "/oauth2/v2.0/token",
    // 构建令牌请求体
    TokenRequestBody = [
        grant_type = "client_credentials",
        client_id = ClientID,
        client_secret = ClientSecret,
        scope = "https://graph.microsoft.com/.default"
    ],
    // 发送POST请求获取令牌
    TokenResponse = Web.Contents(TokenEndpoint, [
        Headers = [#"Content-Type" = "application/x-www-form-urlencoded"],
        Content = Text.ToBinary(Uri.BuildQueryString(TokenRequestBody))
    ]),
    // 解析响应得到访问令牌
    TokenJson = Json.Document(TokenResponse),
    AccessToken = TokenJson[access_token]
in
    AccessToken

2. 调用Graph API获取用户数据

再创建一个新查询,复用上面的令牌来请求用户数据:

let
    // 获取之前生成的访问令牌
    AccessToken = GetAccessToken,
    // Graph API用户端点
    GraphEndpoint = "https://graph.microsoft.com/v1.0/users",
    // 发送带令牌的GET请求
    GraphResponse = Web.Contents(GraphEndpoint, [
        Headers = [
            #"Authorization" = "Bearer " & AccessToken,
            #"Content-Type" = "application/json"
        ]
    ]),
    // 解析JSON响应为表格
    UsersJson = Json.Document(GraphResponse),
    UsersTable = Table.FromRecords(UsersJson[value])
in
    UsersTable

3. 凭证参数说明

  • 你提到的Secret Key Name、Secret ID是Azure门户中存储密钥时的标识,实际API请求中不需要用到,只需要填入Secret Key的具体值即可。
  • 确保你的Azure AD应用已被授予Graph API的User.Read.All权限(应用权限类型),否则会出现权限不足的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:45:22