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

在ADO流水线任务中调用GitHub REST API遇Bad credentials错误的解决方法

解决GitHub API调用「Bad credentials」错误的方案

确认令牌类型与权限

  • 你创建的应该是GitHub个人访问令牌(PAT),仓库密钥是用于加密仓库内部敏感数据的,不能用来做API认证。
  • 生成PAT时必须勾选repo权限组(至少要包含能读取分支保护规则的权限,比如repo:status、针对私有仓库的完整repo权限);如果是组织仓库,还要确认组织没有限制该PAT的权限范围。

修正ADO变量的引用与配置

  • 在Bash脚本里,ADO流水线变量的正确引用格式是$var(而非$(var)),如果是秘密变量,必须在流水线变量设置中勾选「允许脚本访问此变量」,否则脚本读不到变量值,传递空令牌必然触发认证错误。
  • 可以临时在脚本里加一行echo $TOKEN(测试完立刻删掉,别泄露令牌),确认变量是否正确传递。

验证令牌本身的有效性

  • 先在本地终端测试令牌是否能用,替换成你的PAT、仓库路径和分支名:
    curl -H "Authorization: Bearer YOUR_PAT" https://api.github.com/repos/OWNER/REPO_NAME/branches/BRANCH/protection
    
    如果本地也返回Bad credentials,直接重新生成PAT并确认权限勾选正确。

修正API URL的格式

  • REPO变量必须是完整的仓库路径,格式为OWNER/REPO_NAME(比如octocat/hello-world),不能只写仓库名xyz,否则API地址无效,也会导致认证错误。

修正脚本中的转义问题

原脚本里的"是HTML转义字符,在Bash中要直接用双引号",修正后的完整脚本示例:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |  
      TOKEN=$var
      BRANCH="abc"
      REPO="OWNER/xyz"  # 替换为实际的所有者/仓库名
      API_URL="https://api.github.com/repos/$REPO/branches/$BRANCH/protection"
      
      response=$(curl -s -H "Authorization: Bearer $TOKEN" "$API_URL")
                
      echo "Branch Protection rules"
      echo "$response"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:17:14