Github API - 获取用户的私有仓库

Github API - Get private repositories of user

我创建了一个脚本,可以自动在硬盘驱动器上备份我的 GitHub 存储库。

我使用我的 Github 用户名和个人访问令牌来获得 Github 的授权。现在我在他们的文档中阅读了一些关于如何从 API (public & private) 获取我的所有存储库的信息,但我似乎只能获取 public.. .

我的脚本:https://github.com/TomTruyen/GitHub-Backup-Script/blob/main/github_backup_script.sh

根据我在第 78 行的理解,url 应该 return 我所有的 'owned' 存储库(应该包括我的私有存储库)

repositories=$(curl -XGET -s https://"${GITHUB_USERNAME}":"${GITHUB_TOKEN}"@api.github.com/users/"${GITHUB_USERNAME}"/repos?per_page="${repository_count}" | jq -c --raw-output ".[] | {name, ssh_url}")

我已经启用了所有应该给我 'Full control of private repositories (and public)'

的存储库范围

我现在没主意了...我做错了什么吗?

注意:我正在尝试以用户而非组织的身份获取我的私有存储库

注意:${GITHUB_USERNAME} 和 ${GITHUB_TOKEN} 是我在脚本中当然填写的变量

您正在调用 /users 端点,但查看 List repositories for the authenticated user 看起来您应该调用 /user/repos.

默认情况下,这将为当前经过身份验证的用户 return 所有存储库,包括 public 和私有存储库。您还需要正确处理分页(除非您确定您的存储库少于 100 个)。

我能够使用以下脚本获取我所有存储库的列表:

#!/bin/sh
#
# you must set GH_API_USER and GH_API_TOKEN in your environment

tmpfile=$(mktemp curlXXXXXX)
trap "rm -f $tmpfile" EXIT

page=0
while :; do
    let page++
    curl -sf -o $tmpfile \
        -u "$GH_API_USER:$GH_API_TOKEN" \
        "https://api.github.com/user/repos?per_page=100&page=$page&visibility=all"

    count=$(jq length $tmpfile)
    if [[ $count = 0 ]]; then
        break
    fi

    jq '.[]|.full_name' $tmpfile
done