如何获取GitHub App安装令牌以认证克隆仓库
获取GitHub App Installation Access Token并克隆私有仓库的步骤
生成GitHub App私钥
登录GitHub后进入你的App设置页,找到「Private keys」区域,点击「Generate a private key」下载PEM格式的私钥文件,妥善保存到本地。获取App ID与Installation ID
- App ID可在App设置页的「About」区域找到,是一串数字。
- Installation ID需要通过GitHub API获取:先使用私钥生成JWT令牌(有效期不超过60分钟,推荐设为10分钟),再用该令牌请求
GET /app/installations接口,从返回的安装列表中找到对应组织的条目,提取id字段即为Installation ID。 - 生成JWT的Python示例代码:
import jwt import time # 替换为你的实际App ID和私钥路径 APP_ID = 123456 PRIVATE_KEY_PATH = "./github-app-private-key.pem" with open(PRIVATE_KEY_PATH, "r") as f: private_key = f.read() payload = { "iat": int(time.time()) - 60, # 签发时间提前60秒避免时间差问题 "exp": int(time.time()) + 600, # 过期时间设为10分钟后 "iss": APP_ID } jwt_token = jwt.encode(payload, private_key, algorithm="RS256")
获取Installation Access Token
使用生成的JWT令牌,向POST /app/installations/{installation_id}/access_tokens接口发起请求,接口返回的token字段就是所需的Installation Access Token。- Python示例代码:
import requests INSTALLATION_ID = 789012 # 替换为你的实际Installation ID headers = { "Authorization": f"Bearer {jwt_token}", "Accept": "application/vnd.github.v3+json" } response = requests.post( f"https://api.github.com/app/installations/{INSTALLATION_ID}/access_tokens", headers=headers ) response.raise_for_status() installation_token = response.json()["token"]
- Python示例代码:
克隆私有仓库
将获取到的Installation Token作为认证凭据,使用git命令或Python库克隆仓库:- Git命令方式:
git clone https://x-access-token:{installation_token}@github.com/你的组织名/仓库名.git - Python的gitpython库方式:
from git import Repo repo_url = f"https://x-access-token:{installation_token}@github.com/你的组织名/仓库名.git" Repo.clone_from(repo_url, "./本地仓库路径")
- Git命令方式:
内容的提问来源于stack exchange,提问作者Ed Bennett
相关产品推荐
相关产品推荐

