如何使用github3库访问GitHub私有仓库?调用方式存疑求助
解决github3.py无法访问私有仓库的问题
我之前也碰到过github3.py的这个小坑,结合你的情况,问题出在方法的默认行为和参数设置上,给你两个可行的解决方案:
方案1:通过当前认证用户获取所有仓库(推荐)
github3.py里,当你用令牌登录后,可以直接通过me()方法获取当前认证的用户对象,这个对象的repositories()方法默认可以获取你的所有仓库(包括私有),或者明确指定type='all'确保包含私有仓库:
from github3 import login # 登录并获取当前用户 gh = login(token=get_github_token()) current_user = gh.me() # 获取所有仓库(含私有) repos = current_user.repositories(type='all')
这个方式和你用PyGitHub的逻辑更接近,不需要手动传入自己的用户名,因为令牌已经验证了你的身份,me()会自动关联到你的账号。
方案2:修正repositories_by()的参数
如果你坚持要用repositories_by()方法,需要明确指定type='all'参数——因为这个方法的默认type值是'public',所以只会返回公开仓库。修改后的代码如下:
repos = github3.login(token=get_github_token()).repositories_by('myusername', type='all')
这样就能包含你的私有仓库了。
为什么PyGitHub不需要传用户名?
PyGitHub的核心仓库方法(比如get_user().get_repos())默认就是针对当前认证用户的,并且默认会获取所有类型的仓库;而github3.py的repositories_by()是一个通用方法,既可以用来查询自己的仓库,也可以查询其他用户的公开仓库,所以需要你明确指定参数来获取私有内容。
内容的提问来源于stack exchange,提问作者hungryWolf
相关产品推荐
相关产品推荐

