def get_user(user_id): """Get a specific user""" user = users.get_user(user_id) if user is not None: return jsonify({'user': user.to_dict()}) else: return jsonify({})
def github(): access_token_url = 'https://github.com/login/oauth/access_token' users_api_url = 'https://api.github.com/user' params = { 'client_id': request.json['clientId'], 'redirect_uri': request.json['redirectUri'], 'client_secret': app.config['GITHUB_SECRET'], 'code': request.json['code'] } # Step 1. Exchange authorization code for access token. r = requests.get(access_token_url, params=params) access_token = dict(parse_qsl(r.text)) headers = {'User-Agent': 'Satellizer'} # Step 2. Retrieve information about the current user. r = requests.get(users_api_url, params=access_token, headers=headers) profile = json.loads(r.text) # Step 3. Create a new account or return an existing one. user = users.get_user(profile['id']) if user: token = create_token(user) return jsonify(token=token, user_id=user.id) else: user = users.create_user({ 'id': profile['id'], 'name': profile['name'] }) token = create_token(user) return jsonify(token=token, user_id=user.id)