2017-12-12 24 views
3

Github-Flask을 사용하여 내 앱의 사용자를 authenitcate합니다. 나는 github.authorize(scope='user:email')을 사용합니다. 로그인 한 사용자의 이메일은 어떻게받을 수 있습니까? login 경로는 GitHub의의 인증 페이지로 리디렉션됩니다GitHub-Flask 범위 승인 문제

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')) 

답변

3

, 그것은 사용자가 로그인되어 있지 않기 때문에 아직 사용자 데이터에 액세스 할 수있는 방법이 없습니다. 당신이 authorized 콜백에 도착하면, 당신은 API 통화를 할 수 있습니다 GitHub.

authorized 경로에서 user API 끝점을 호출하려면 github.get을 사용하십시오.

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

의 사용자 로그인 저장 global user를 사용하지 마십시오. Are global variables thread safe in flask?을 참조하십시오. session에 사용자 ID를 저장하고 GitHub-Flask's full example과 같이 사용자를 g에로드하십시오.