编程语言
首页 > 编程语言> > python-GitHub-Flask授权范围问题

python-GitHub-Flask授权范围问题

作者:互联网

我正在使用Github-Flask在我的应用程序上对用户进行身份验证.我使用github.authorize(scope =’user:email’).如何获得登录用户的电子邮件?

github = GitHub(app)
user = None

@app.route('/login')
def login():
   if user.username: 
      return redirect(url_for('index'))

   return github.authorize(scope='user:email')

@github.access_token_getter
def token_getter():
   if user is not None:
      return user.github_access_token

@app.route('/github-callback')
@github.authorized_handler
def authorized(oauth_token):
    if oauth_token is None:
       flask.flash("Authorization failed.")
       return redirect(url_for('index'))

   global user
   user.username = oauth_token
   return redirect(url_for('index'))

解决方法:

登录路由仅重定向到GitHub的授权页面,由于用户尚未登录,它尚无法访问用户数据.一旦获得授权的回调,就可以对GitHub进行API调用.

在授权的路由中,使用github.get调用user API端点.

data = github.get('user')
email = data['email']

另外,请勿使用全局用户来存储登录的用户.请参阅Are global variables thread safe in flask?,而是将用户ID存储在会话中,然后将用户加载到g中,如GitHub-Flask’s full example所示.

标签:github,flask,github-api,python
来源: https://codeday.me/bug/20191110/2014332.html