def facebook_posts(user_id): """ 获取 Facebook posts API: https://developers.facebook.com/docs/graph-api/reference/v3.2/user/feed """ user = load_user(user_id) if not facebook.authorized: return redirect(url_for('facebook.login')) last_post = models.FacebookPost.query.filter_by(user=user).order_by( models.FacebookPost.created_at.desc()).first() if last_post: last_post_time = pendulum.instance(last_post.created_at).timestamp() resp = facebook.get('v3.2/me/feed?since={}'.format(last_post_time)) else: resp = facebook.get('v3.2/me/feed') if not resp.ok: app.logger.error(resp.json()) return jsonify(resp.json()) posts = resp.json()['data'] for post in posts: created_at = pendulum.parse(post['created_time']) try: fb = db.session.query( models.FacebookPost).filter_by(post_id=post['id']).one() except NoResultFound: fb = models.FacebookPost(post_id=post['id'], created_at=created_at, detail=json.dumps(post), api_url=resp.url, user=user) db.session.add(fb) db.session.commit() if json.loads(fb.detail).get('message'): result = azure(fb.id, json.loads(fb.detail)['message']) for row in result['documents']: print('======== create sentiment ') sentiment = models.Sentiment(score=row['score'], language='en') db.session.add(sentiment) db.session.commit() fb.sentiment = sentiment fb.sentiment_id = sentiment.id db.session.add(fb) db.session.commit() return jsonify({"msg": "success"})
def main(): try: print "*" * 80 resp = facebook.get('/me?fields=email') credentials_dict = resp.json() email = str(credentials_dict[unicode('email')]) id = int(credentials_dict[unicode('id')]) print email print id try: new_user = User(id, '*****@*****.**') db.session.add(new_user) db.session.commit() return render_template('main_page_not_previously_registered.html', user=email, user_id=id, navbar=NAVBAR) except IntegrityError: db.session.rollback() return render_template('main_page_logged_in.html', user=email, user_id=id, navbar=NAVBAR) except KeyError: return render_template('main_page_not_logged_in.html')
def facebook_login(): if not facebook.authorized: return redirect(url_for('facebook.login')) response = facebook.get('/me') #assert resp.ok, resp.text print(response.json()) return "You are @{login} on facebook".format(login=response.json()['name'])
def callback(self): resp = facebook.get('me?fields=id,first_name,email').json() try: return resp['id'], resp['first_name'], resp['email'] except KeyError: flash(resp) return None, None, None
def facebook_login(): if current_user.is_authenticated and facebook.authorized: return redirect(url_for('profile')) if (not facebook.authorized) and (not current_user.is_authenticated): return redirect(url_for('facebook.login')) try: account_info = facebook.get('me?fields=id,first_name,email') if account_info.ok: with open("errorlog.log", "a+") as cricket: cricket.write(str(account_info) + "\n") if account_info.ok: account_info_json = account_info.json() email = account_info_json["email"] f_name = account_info_json["first_name"] #login_method = "google" user = User.query.filter_by(email=email).first() if user is None: user = User(email=email, f_name=f_name) db.session.add(user) db.session.commit() login_user(user) current_user.login_method = "facebook" flash("Signed in with Facebook") return redirect(url_for('profile')) except (InvalidGrantError, TokenExpiredError) as e: return redirect(url_for('facebook.login')) return redirect(url_for('profile'))
def callback(self): resp = facebook.get('me?fields=id,first_name,email').json() try: return resp['id'], resp['first_name'], resp['email'] except KeyError: flash(resp) return None, None, None
def login_facebook(): if not facebook.authorized: return redirect(url_for("facebook.login")) resp = facebook.get("me?fields=id,name,email,first_name,short_name") if resp.ok: name = resp.json()["name"] email = resp.json()["email"] username = resp.json()["short_name"] oauth_id = resp.json()["id"] # Create cursor cur = mysql.connection.cursor() # Get user by email result = cur.execute("SELECT * FROM users WHERE email =%s AND oauth_id=%s", [email,oauth_id]) if result>0: print "THIS WORKSSSSSSSSSSSSSSSS" # data = cur.fetchone() session['logged_in'] = True session['username'] = username # Close connection cur.close() flash('You are now logged in via Facebook','success') return redirect(url_for('dashboard')) else: # Execute Query cur.execute("INSERT INTO users(name, email, username, oauth_id) VALUES(%s, %s, %s, %s)", (name, email, username, oauth_id)) # Commit to DB mysql.connection.commit() # Close connection cur.close() session['logged_in'] = True session['username'] = username flash('Successfully registered via Facebook','success') return redirect(url_for('dashboard'))
def logged_in(blueprint, token): from .models import User if blueprint.name == "facebook": resp = facebook.get("/me?fields=name,first_name,email") email = resp.json()["email"] f_name = resp.json()["first_name"] account_type = "facebook" elif blueprint.name == "github": user_info = github.get("/user") user_email = github.get("/user/emails") email = user_email.json()[0]["email"] f_name = user_info.json()["name"] account_type = "github" elif blueprint.name == "gitlab": resp = gitlab.get("user") email = resp.json()["email"] f_name = resp.json()["name"].split()[0] account_type = "gitlab" user = User.query.filter_by(email=email).first() if not user: user = User(email=email, f_name=f_name) user.account_type = account_type try: db.session.add(user) db.session.commit() except Exception as err: db.session.rollback() print(err) login_user(user) g.user = user flash(_("You have been logged in."), category="success")
def get_username(): try: current_app.logger.info('auth.get_username') oauth = OAuthSignIn.get_provider('facebook') social_id, username, email = oauth.callback() current_app.logger.info( 'from callback id: %s username: %s email: %s', social_id, username, email) resp = facebook.get('/me?fields=id,name,email,picture') def dump(obj): 'dump object attributes' for attr in dir(obj): current_app.logger.info('obj.%s = %r' % (attr, getattr(obj, attr))) dump(resp) if resp.status_code != 200: logout_user() return 'Unauthorized', 401 return jsonify({'username': username}) except Exception as ex: current_app.logger.info( 'failed to get username for current user %s', ex) raise ex
def getUserNameOfGithub(): if facebook.authorized: resp = facebook.get("/me?fields=gender,birthday") id = resp.json()["id"] return resp.json()["birthday"] else: return "<h1> you are not logged in</h1>"
def login(): if not facebook.authorized: return redirect(url_for("facebook.login")) resp = facebook.get("account/settings.json") assert resp.ok return "You are @{screen_name} on facebook".format( screen_name=resp.json()["screen_name"])
def facebook_login(): if not facebook.authorized: return redirect(url_for('facebook.login')) resp = facebook.get("/oauth2/v2/userinfo") assert resp.ok, resp.text return '<h1>Your Facebook email is @{}</h1>'.format(resp.json()['email'])
def oauth_facebook(): if not facebook.authorized: return redirect(url_for("facebook.login")) resp = facebook.get("/me") assert resp.ok, resp.text session['username'] = resp.json()["name"] session['oauth_source'] = 'facebook' return redirect("/commentary/list/")
def index(): if not facebook.authorized: print("Try to OAuth login :"******"facebook.login")) print("Authorized already") resp = facebook.get("/me") assert resp.ok, resp.text #return "You are {name} on Facebook, more detail{detail}".format(name=resp.json()["name"], detail=resp.json()) return render_template('h1.html')
def me(): if not facebook.authorized: return abort(404) me = facebook.get('/me').json() user = find_or_create_user(me['id'], me['name']) login(user) return jsonify(_strid(user))
def facebook_login(): if not facebook.authorized: return redirect(url_for('facebook.login')) resp = facebook.get('/oauth2/v2/userinfo') assert resp.ok, resp.text username = resp.json()['email'] if not users.find_one({"username": username}): users.insert_one({"username": username, "words": []}) return make_json_response({"username": username}, 200)
def facebook_auth(facebook_blueprint, token): """ Facebook 登录 """ if not token: return False resp = facebook.get('me') if not resp.ok: return jsonify(resp.json()) fb_name = resp.json()['name'] fb_id = resp.json()['id'] # Find this OAuth token in the database, or create it query = models.OAuth.query.filter_by( provider=facebook_blueprint.name, provider_user_id=fb_id, ) try: # 查找用户授权 oauth = query.one() except NoResultFound: # 创建 OAuth oauth = models.OAuth( provider=facebook_blueprint.name, provider_user_id=fb_id, ) if oauth.user: login_user(oauth.user) # flash("Successfully signed in with Facebook.") else: # Create a new local user account for this user user = models.User(username=fb_name) # Associate the new local user account with the OAuth token oauth.user = user # Save and commit our database models db.session.add_all([user, oauth]) db.session.commit() # Log in the new local user account login_user(oauth.user) # flash("Successfully signed in with Facebook.") # 更新 token actions.update_oauth_token(oauth, token) # 更新获取 posts print('=== get user posts') facebook_posts(oauth.user.id) return redirect('/#/index?name={}&id={}'.format(oauth.user.username, oauth.user.id))
def facebook_login(): if not facebook.authorized: return redirect(url_for('facebook.login')) account_info = facebook.get('public_profile.json') if account_info.ok: account_info_json = account_info.json() return '<h1> Your Facebook name is @{}</h1>'.format( account_info_json['name']) return '<h1>Request failed!</h1>'
def facebook_login(): if not facebook.authorized: return redirect(url_for("facebook.login")) resp = facebook.get("/me?fields=name,email") user = User.query.filter_by(username=resp.json()["email"]).first() if not user: user = User(resp.json()["email"], '') db.session.add(user) db.session.commit() login_user(user) flash("Login in as name=%s using Facebook login" % (resp.json()['name']), 'success') return redirect(request.args.get('next', url_for('auth.routine')))
def connect_facebook(): page_referrer = request.referrer if not facebook.authorized: return redirect(url_for("facebook.login")) resp = facebook.get("/me?fields=id,name,email,picture") assert resp.ok current_profile = UserProfile( name="{val}".format(val=resp.json()['name']), oauth_provider='facebook', picture_url="{val}".format(val=resp.json()['picture']['data']['url'])) session['current_profile'] = current_profile.to_json() return redirect(page_referrer)
def test_context_local(make_app): responses.add(responses.GET, "https://google.com") # set up two apps with two different set of auth tokens app1 = make_app( "foo1", "bar1", redirect_to="url1", storage=MemoryStorage({"access_token": "app1"}), ) app2 = make_app( "foo2", "bar2", redirect_to="url2", storage=MemoryStorage({"access_token": "app2"}), ) # outside of a request context, referencing functions on the `facebook` object # will raise an exception with pytest.raises(RuntimeError): facebook.get("https://google.com") # inside of a request context, `facebook` should be a proxy to the correct # blueprint session with app1.test_request_context("/"): app1.preprocess_request() facebook.get("https://google.com") request = responses.calls[0].request assert request.headers["Authorization"] == "Bearer app1" with app2.test_request_context("/"): app2.preprocess_request() facebook.get("https://google.com") request = responses.calls[1].request assert request.headers["Authorization"] == "Bearer app2"
def test_context_local(make_app): responses.add(responses.GET, "https://google.com") # set up two apps with two different set of auth tokens app1 = make_app( "foo1", "bar1", redirect_to="url1", storage=MemoryStorage({"access_token": "app1"}), ) app2 = make_app( "foo2", "bar2", redirect_to="url2", storage=MemoryStorage({"access_token": "app2"}), ) # outside of a request context, referencing functions on the `facebook` object # will raise an exception with pytest.raises(RuntimeError): facebook.get("https://google.com") # inside of a request context, `facebook` should be a proxy to the correct # blueprint session with app1.test_request_context("/"): app1.preprocess_request() facebook.get("https://google.com") request = responses.calls[0].request assert request.headers["Authorization"] == "Bearer app1" with app2.test_request_context("/"): app2.preprocess_request() facebook.get("https://google.com") request = responses.calls[1].request assert request.headers["Authorization"] == "Bearer app2"
def handleSession(): authed = False if ("userEmail" in session and "userAvatar" in session and "userName" in session): authed = True userEmail = session["userEmail"] elif ("userEmail" in session or "userAvatar" in session or "userName" in session): session.clear() if twitter.authorized and not authed: resp = twitter.get("account/verify_credentials.json", params={"include_email": "true"}) if resp.ok: authed = True resp_json = resp.json() userName = resp_json["screen_name"] userEmail = resp_json["email"] userAvatar = resp_json["profile_image_url"] elif facebook.authorized and not authed: resp = facebook.get("/me?fields=id,name,email,picture,birthday") if resp.ok and resp.text: authed = True resp_json = resp.json() userName = resp_json["name"] userEmail = "" if "email" in resp_json: userEmail = resp_json["email"] userAvatar = resp_json["picture"]["data"]["url"] elif github.authorized and not authed: resp = github.get('/user') if resp.ok: authed = True resp_json = resp.json() userName = resp_json["login"] userEmail = resp_json["email"] userAvatar = resp_json["avatar_url"] if authed and userEmail: res = dbComms.userCheck(db, userEmail) if res == False: dbComms.userCreate(db, userName, userEmail, userAvatar) if "userName" not in session or "userEmail" not in session: user = dbComms.userGetByEmail(db, userEmail) session["userName"] = user.username session["userEmail"] = userEmail session["userAvatar"] = user.avatarUrl session["creationDate"] = user.creationDate if "warning" in session: session["warningMsg"] = session["warning"] session["warning"] = warnings.noWarning() else: session["warningMsg"] = warnings.noWarning() session["warning"] = warnings.noWarning()
def logged_in(blueprint, token): from .models import User if blueprint.name == 'twitter': username = session.get('twitter_oauth_token').get('screen_name') elif blueprint.name == 'facebook': resp = facebook.get("/me") username = resp.json()['name'] user = User.objects(username=username)[0] if not user: user = User() user.username = username user.save() login_user(user) flash("You have been logged in.", category="success")
def logged_in(blueprint, token): from .models import db, User if blueprint.name == 'twitter': username = session.get('twitter_oauth_token').get('screen_name') elif blueprint.name == 'facebook': resp = facebook.get("/me") username = resp.json()['name'] user = User.query.filter_by(username=username).first() if not user: user = User() user.username = username db.session.add(user) db.session.commit() login_user(user) flash("You have been logged in.", category="success")
def facebook_login(): if not facebook.authorized: return redirect(url_for('facebook.login')) account_info = facebook.get('/me') if account_info.ok: print("access_token: ", facebook.access_token) me = account_info.json() session['logged_in'] = True session['facebook_token'] = facebook.access_token session['user'] = me['name'] session['user_id'] = me['id'] return redirect(url_for('main')) return redirect(url_for('login'))
def fblogin(): if not facebook.authorized: return redirect(url_for("facebook.login")) resp = facebook.get("/me") assert resp.ok, resp.text name = resp.json()["name"] username=name print(resp.json()) fbid = resp.json()["id"] if lg.checkUsers(name): print("logged in") else: lg.insertUser(name,"- ","-",fbid) return redirect(url_for('home'))
def facebook_logged_in(bp, token): if not token: flash('Fail to login with facebook') return False resp = facebook.get('/me?fields=email,name,picture') if not resp.ok: flash('Fail to get user profile form facebook', category="error") return False # example response ''' { 'email': '*****@*****.**', 'picture': {'data': {'height': 50, 'is_silhouette': False, 'url': 'https://image_url', 'width': 50}}, 'id': '128371982371892' } ''' user_info = resp.json() picture = None try: picture = user_info.get('picture').get('data').get('url') except: pass try: ok = _save_and_login_user(user_id=user_info.get('id'), user_name=user_info.get('name'), email=user_info.get('email'), picture=picture, token=token, provider_name=fb_blueprint.name) if ok: flash("Successfully signed in with Facebook.") except Exception as e: current_app.logger.error( "[Flask Dance: facebook] cannot save and login user %s" % str(e)) db.session.rollback() # prevent flask-dance trigger twice return False
def facebook_login(): if not facebook.authorized: return redirect(url_for('facebook.login')) account_info = facebook.get('/me?fields=id,email,name') if account_info.ok: account_info_json = account_info.json() user = UserModel() user.email = account_info_json['email'] user.save() ser_data = user_schema.dump(user).data token = Auth.generate_token(ser_data.get('id')) return custom_response({'jwt_token': token}, 200) return custom_response('Resigter facebook failed', 500)
def callback(provider): current_app.logger.info('callback/provider') if not current_user.is_anonymous: return redirect('/') oauth = OAuthSignIn.get_provider(provider) social_id, username, email = oauth.callback() if social_id is None: flash('Authentication failed.') return redirect('/') resp = facebook.get('/me?fields=id,name,email,picture') def dump(obj): for attr in dir(obj): current_app.logger.info('obj.%s = %r' % (attr, getattr(obj, attr))) dump(resp) current_app.logger.info(social_id) current_app.logger.info(username) current_app.logger.info(email) if not is_in_whitelist(email): raise NotAuthorizedException(username) user = None database = current_app.cache.get('db') users = database.get_user(social_id) if users is not None and len(users) != 0: user = users[0] if not user: current_app.logger.info( 'create the user and insert it into the database.') current_app.logger.info('profile: username:%s\nsocial_id:%s\n', username, social_id) user = AppUser(social_id, username) current_app.logger.info('updating cache with user') database.insert_user(user) current_app.cache.set('db', database) login_user(AppUser(social_id, username), True) return redirect('/')
def login_facebook(): if not facebook.authorized: return redirect(url_for('facebook.login')) response = facebook.get('/me?fields=name,email, id') user = User.query.filter_by(email=response.json()['email']).first() if not user: user = User(email=response.json()['email'], username=response.json()['email'].split('@')[0], social='facebook$' + response.json()['id']) db.session.add(user) db.session.commit() redirect(url_for('home')) flash( f"AWesome. You have logged in as {response.json()['email'].split('@')[0]}", 'success') login_user(user) flash(f'Welcome back, {user.username}.') return redirect(url_for('home'))
def _get_user_info(): """Gets user's info from facebook, then query db to extract various fields.""" # get facebook account info json = facebook.get("/me").json() user_id = json['id'] name = json['name'] fb_info = user_id + "|" + name # some logging date_now = time.strftime("%Y-%m-%d") time_now = time.strftime("%Y-%m-%d_%H%M%S") print(f"[*] {time_now} -", fb_info, "logged", file=open(f"logs/{date_now}.log", "a")) print(f"[*] {time_now} -", fb_info, "logged") user = Database.get_user_by_fb_info(fb_info) return user
def facebook_login(): """ App is in development mode use test user credentials email: [email protected] password: admin@123 """ if not facebook.authorized: return redirect(url_for('facebook.login')) account_info = facebook.get('me?fields=id,name,email') # print(account_info) if account_info.ok: account_info_json = account_info.json() user = {} user['email'] = account_info_json['email'] user['firstName'] = account_info_json['name'].split()[0] user['lastName'] = account_info_json['name'].split()[1] return third_party_user_handler(user['email'], user['firstName'], user['lastName'], 'facebook')