是否存在可检查用户私有仓库访问权限且不获取代码的Github API OAuth权限范围?
GitHub OAuth仓库权限校验的最优方案
核心思路
在不申请代码访问权限的前提下,通过最小OAuth权限组合,结合GitHub API的返回状态或仓库列表,判断用户对目标仓库的访问权限。
方案一:分场景使用最小权限组合
- 公开仓库:申请
public_repo权限,调用GET /repos/{owner}/{repo}接口。返回200则代表用户可访问(公开仓库默认全员可访问,若返回404则仓库不存在或被设为内部可见)。 - 组织私有仓库:申请
read:org权限,调用GET /orgs/{org}/repos?type=private接口,遍历返回的仓库列表,若目标仓库在列表内则用户有权访问。 - 个人私有仓库:目前GitHub没有不包含代码访问权限的OAuth范围可直接校验,可考虑申请最小的
repo:read权限,并在授权环节明确告知用户:该权限仅用于校验访问资格,不会读取仓库代码内容。
方案二:优化repo:status的使用方式
若你倾向使用repo:status权限,无需猜测分支名:先调用 GET /repos/{owner}/{repo}/branches 接口(该接口在拥有repo:status权限时可访问),获取仓库的所有分支后,任选一个分支调用状态接口即可完成权限校验,避免依赖固定分支名的问题。
内容的提问来源于stack exchange,提问作者David Carboni
相关产品推荐
相关产品推荐

