0

我正在使用 python、Flask_OAuthlib 和 heroku 制作这个应用程序,以访问用户 Github 的公共存储库并创建一个存储库并在那里复制所需的文件。该应用程序已连接,并且还作为授权 OAuth 应用程序获得以下权限。 我的 OAuth 应用程序的 Github 权限

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

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': '需要身份验证'

我可以看到身份验证存在问题。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')

我想知道我在这里缺少什么。谢谢你的帮助

4

1 回答 1

0

我可以找出问题所在。由于某种原因,为以后获取theToken和使用它定义一个全局变量不起作用。我只是逐行移动80179现在运行良好!哦,还有一个小的修正: theToken = session.get('github_token')[0],因为 get 函数返回一个长度为 2 的元组,其中第一个值是访问令牌,第二个值是密钥。

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

于 2019-09-07T19:02:36.607 回答