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分离)。
求助问题:
- 如何避免重复OAuth提示?
- 能否复用连接器会话中的OAuth令牌直接调用
Web.Contents()? - 是否有更好的方式合并LFS与GitHub连接器以避免凭证分离?
- 重复登录是否因每个
Web.Contents(url)被视为新的未认证源?
内容的提问来源于stack exchange,提问作者Jacek Antek
相关产品推荐
相关产品推荐

