如何解决使用pyGithub在经过身份验证的用户上创建存储库会引发异常
一切顺利,直到我从get_user()在AuthenticatedUser上调用create_repo为止。 无论我尝试什么,它总是会引发异常:
[ERROR tornado.application web:1599] Exception in exception handler Traceback (most recent call last): File "/Users/marcocano/Desktop/tsri/discovery-app/discovery/web/api/github.py",line 43,in post
repo = auth_user.create_repo(repo_name) File "/Users/marcocano/Desktop/tsri/discovery-app/env/lib/python3.6/site-packages/github/AuthenticatedUser.py",line 679,in create_repo
"POST","/user/repos",input=post_parameters File "/Users/marcocano/Desktop/tsri/discovery-app/env/lib/python3.6/site-packages/github/Requester.py",line 319,in requestJsonAndCheck
verb,url,parameters,headers,input,self.__customConnection(url) File "/Users/marcocano/Desktop/tsri/discovery-app/env/lib/python3.6/site-packages/github/Requester.py",line 342,in __check
raise self.__createException(status,responseHeaders,output) github.GithubException.UnknownObjectException: 404 {"message": "Not Found","documentation_url": "https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated-user"}
代码:
if self.request.headers['Content-Type'] == 'application/json':
self.args = json.loads(self.request.body)
repo_name = self.args.get('name',None)
if not repo_name:
raise HTTPError(400,reason=f"Required parameter 'name' not provided")
user = json.loads(self.get_secure_cookie("user"))
# signin with token
g = Github(user['access_token'])
# authenticated user
auth_user = g.get_user()
if auth_user.login:
try:
print('auth_user',auth_user)
repo = auth_user.create_repo(repo_name)
print(repo)
except GithubException as e:
raise HTTPError(400,reason=e)
except Exception as exc: # unexpected
raise HTTPError(500,reason=str(exc))
else:
raise HTTPError(400,reason=f"Unable to authenticate user")
return repo
解决方法
问题是给我的令牌缺少适当的范围,以下是用于请求正确范围的文档:https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。