from flask import make_response, redirect from requests import post, get def googleCallback(request, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, url_scheme, domain, s): try: code = request.args.get("code") url = "https://www.googleapis.com/oauth2/v4/token" #The baseurl headers = {'Content-Type': 'application/x-www-form-urlencoded',} params = {'client_id': GOOGLE_CLIENT_ID, 'client_secret': GOOGLE_CLIENT_SECRET, 'code': code, "grant_type": "authorization_code", "redirect_uri": url_scheme + "://" + domain[0] + "/user/google-callback"} #As paramtere we send the client id and the client secret which we get from github when registering an application and the user code from before access_token = post(url,params, headers=headers).text.split('access_token": "')[1].split('"')[0] authorization_header = {"Authorization": "OAuth %s" % access_token} r = get("https://www.googleapis.com/oauth2/v2/userinfo", headers=authorization_header) userID = r.text.split('"id": "')[1].split('"')[0] name = r.text.split('"name": "')[1].split('"')[0] resp = make_response(redirect('/')) #redirect the user at the end back to the main page resp.set_cookie('userID', s.dumps("google_" + userID)) #set the cookies with username and userid resp.set_cookie('username', s.dumps(name)) return resp except: print("Authentication failed") if (__name__ == "__main__"): print("This file is not made fore direct call, please run the main.py") exit()