一切顺利,直到我从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
答案 0 :(得分:0)
问题是给我的令牌缺少适当的范围,以下是用于请求正确范围的文档:https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/