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

Power BI自定义连接器多Git LFS文件重复OAuth登录问题求助

Power BI GitHub OAuth自定义连接器重复登录问题

我正在构建基于GitHub OAuth的Power BI自定义连接器,实现了两个独立的DataSource.Kinds:

  • GitHub:用于访问标准GitHub API资源(如文件元数据)
  • GitHubCloud:用于通过Git LFS Batch API下载大文件

连接器结构

GitHub认证(API访问)

GitHub = [
    Authentication = [
        OAuth = [
            StartLogin = ...,
            FinishLogin = ...,
            ...
        ]
    ]
];

通过GitHub.Contents = (relativePath, folderPath, branchName) => ... Web.Contents("https://api.github.com", ...)获取仓库内容。

GitHubCloud认证(LFS文件下载)

GitHubCloud = [
    Authentication = [
        OAuth = [
            StartLogin = ...,
            FinishLogin = ...,
            ...
        ]
    ]
];

用于GitHub.LfsDownloadUrl = (sha, size, repo) => ... Web.Contents("https://github.com", ...)。

LFS文件处理逻辑

通过检查首行判断CSV是否为Git LFS指针文件:

if Text.StartsWith(List.First(Table.ColumnNames(b)), "version https://git-lfs.github.com")

若是则提取oid和size,调用LFS批量端点,通过预签名URL下载内容:

let
    sha = fnGetLfsSha(b),
    size = fnGetLfsSize(b),
    urlLfs = GitHub.LfsDownloadUrl(sha, Text.From(size), paramRepository),
    csvTable = Csv.Document(Web.Contents(urlLfs))
in
    ...

问题

刷新或加载多个Git LFS文件时,Power BI会针对每个文件触发OAuth登录提示(有时4-5次),尽管两个数据源均使用OAuth,但令牌未在Web.Contents(urlLfs)调用间持久化。

已尝试方案

  • 创建独立GitHubCloud源及专属OAuth流程
  • 硬编码ManualCredentials = true(Power BI不接受)
  • 在两个连接器中统一使用AccessToken = (token) => "Bearer " & token[access_token]

需求与求助

期望实现:单次OAuth会话认证,复用令牌下载多Git LFS文件,避免重复提示,同时保持连接器模块化(GitHub API与LFS分离)。

求助问题:

  1. 如何避免重复OAuth提示?
  2. 能否复用连接器会话中的OAuth令牌直接调用Web.Contents()?
  3. 是否有更好的方式合并LFS与GitHub连接器以避免凭证分离?
  4. 重复登录是否因每个Web.Contents(url)被视为新的未认证源?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:42:42