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

Power BI自定义连接器开发求助:Xero API OAuth认证及服务器连接

Power BI自定义连接器(M语言)对接Xero OAuth认证完整示例

先给你理清楚前置准备,这步是基础,不能漏:

  • 登录Xero开发者平台创建一个Custom Connector类型的应用
  • 记下生成的Client ID和Client Secret
  • 在应用的重定向URL里添加https://oauth.powerbi.com/views/oauthredirect.html(这是Power BI官方的OAuth回调地址,必须完全一致,多一个空格都不行)

下面是完整的M语言连接器代码,我给你加了详细注释,直接替换掉你的Client ID和Secret就能用:

section XeroConnector;

// 1. 配置OAuth2认证核心参数
XeroOAuthConfig = [
    AuthorizationUri = "https://login.xero.com/identity/connect/authorize",
    TokenUri = "https://identity.xero.com/connect/token",
    ClientId = "你的Xero Client ID", // 替换成你的实际Client ID
    ClientSecret = "你的Xero Client Secret", // 替换成你的实际Client Secret
    RedirectUri = "https://oauth.powerbi.com/views/oauthredirect.html",
    Scope = "openid profile email accounting.transactions accounting.settings", // 根据业务需求调整权限范围
    ExtraQueryParameters = [response_type = "code"],
    TokenHeaders = [
        #"Content-Type" = "application/x-www-form-urlencoded"
    ]
];

// 2. 创建OAuth2授权上下文,自动处理令牌刷新
XeroAuthContext = OAuth2.AuthorizationCodeFlow(XeroOAuthConfig);

// 3. 示例函数:获取Xero关联的组织列表
GetXeroOrganizations = () =>
    let
        // 从授权上下文获取有效访问令牌
        AccessToken = XeroAuthContext()[AccessToken],
        // 调用Xero组织信息API
        ApiResponse = Web.Contents(
            "https://api.xero.com/api.xro/2.0/Organisation",
            [
                Headers = [
                    #"Authorization" = "Bearer " & AccessToken,
                    #"Accept" = "application/json"
                ]
            ]
        ),
        // 解析JSON响应数据
        ParsedJson = Json.Document(ApiResponse),
        // 提取组织列表
        OrganizationList = ParsedJson[Organisations]
    in
        OrganizationList;

// 4. 暴露连接器的入口函数,让Power BI能识别
shared Xero.GetOrganizations = GetXeroOrganizations;

关键细节提醒:

  • 权限范围(Scope):上面选的是常用的基础权限,如果你需要访问发票、联系人等数据,可以参考Xero官方文档添加对应scope,比如accounting.contacts或accounting.invoices
  • 租户ID(Xero-Tenant-Id):如果你的应用关联了多个Xero租户,第一次调用API时可以不填这个请求头,Xero会返回所有有权限的租户信息,后续可以把租户ID存下来用于定向调用接口
  • 令牌刷新:M语言的OAuth2.AuthorizationCodeFlow会自动处理令牌过期刷新,不用你手动写刷新逻辑

测试步骤:

  1. 在Visual Studio中打开Power Query SDK,新建一个连接器项目
  2. 把上面的代码替换到.pq文件中,填入你的Client ID和Secret
  3. 点击「Start Debugging」,Power BI Desktop会自动启动并加载你的自定义连接器
  4. 选择你的连接器,点击「Connect」,会跳转到Xero的授权页面,登录并授权后就能看到返回的组织数据了

要是遇到授权失败,先排查这几个点:

  • 重定向URL是否和Xero应用里设置的完全一致(包括HTTPS协议、完整路径)
  • Client ID和Secret有没有复制错误
  • 所选的Scope是否在Xero应用的权限范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:03:41