github.GithubException.GithubException:要在用户的公共仓库上创建仓库时在Heroku上运行401-Github API

时间:2019-09-07 16:10:04

标签: heroku github-api pygithub flask-oauthlib github-app

我正在使用python,Flask_OAuthlib和heroku制作此应用,以访问用户Github的公共存储库,并创建存储库并在此处复制所需文件。该应用程序已连接,并作为OAuth授权应用程序获得以下权限。 Github permissions to my OAuth app

然后我有这段代码来在用户的Github的公共存储库空间中创建一个存储库,并在其中复制一些文件

177   @app.route('/replicate', methods=['GET', 'POST'])
178   def replicate():
179  
170       g = Github(theToken)
181       repo_name = request.form['repo']
182       user = g.get_user()
183       repo = user.create_repo(repo_name)  

当用户按下一个按钮且仅当登录后该按钮才可访问,并且该应用显示其Github中的用户名和个人资料图片时,会触发此代码。因此,与Github的会议非常顺利。但是,heroku会导致此错误:

github.GithubException.GithubException: 401 {'message': 'Requires authentication'

我可以看到认证存在问题。 theToken是用这种方式捕获的。首先,我在代码顶部创建了一个theToken=None,然后在/login部分中捕获了该代码,如下所示:

78   @github.tokengetter
79   def get_github_oauth_token():
80       theToken = session.get('github_token')
81       return session.get('github_token')

我想知道我在这里想念的是什么。谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

我可以找出问题所在。由于某种原因,定义全局变量以获取multiprocessing并在以后使用它不起作用。我只是将第theToken行移到了80行,它现在工作得很好! 哦,并作如下小修正: 179,因为get函数返回一个长度为2的元组,其第一个值为访问令牌,第二个为密钥。

希望这个问题和答案将来会对某人有所帮助!