def callback():
     client = WebApplicationClient(os.getenv("CLIENT_ID"))
     client.state = request.args.get('state')
     code = request.args.get('code')
     tokenurl, headers, body = client.prepare_token_request(
         'https://github.com/login/oauth/access_token',
         state=client.state,
         code=code)
     secret = os.getenv('OAUTH_SECRET')
     clientid = os.getenv("CLIENT_ID")
     tokenresponse = requests.post(tokenurl,
                                   data=body,
                                   auth=(clientid, secret))
     client.parse_request_body_response(tokenresponse.text)
     userinfo_endpoint = "https://api.github.com/user"
     uri, headers, body = client.add_token(userinfo_endpoint)
     userinfo_response = requests.get(uri, headers=headers, data=body)
     userinfo_json = userinfo_response.json()
     id = userinfo_json['id']
     flask_login.login_user(load_user(id))
     app.logger.info("user logged in Succesfully",
                     extra={"user_id": flask_login.current_user.get_id()})
     return redirect("/")
 def unauthenticated():
     client = WebApplicationClient(os.getenv("CLIENT_ID"))
     client.state = client.state_generator()
     authredirect = client.prepare_request_uri(
         "https://github.com/login/oauth/authorize", state=client.state)
     return redirect(authredirect)