我使用React asfrontend和Python&Flask作为我的backend,使用Rauth作为{}登录Facebook,并在数据库中存储每个用户的详细信息,并使用flask_login作为保护。这些信息包括体育、教育、电话号码和其他信息。在
我要做的是在用户登录后,我试图从react应用程序fetch查看他的详细信息。但是当我在浏览器上打开API时,我会看到错误用户没有登录,我可以看到json。在@login_manager.user_loader
def load_user(id):
return User.select().where(User.id == id).first()
@app.route('/')
def index():
return redirect(WEB_URL)
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(WEB_URL)
@app.route('/me')
@login_required # After removing decorator still I am not getting
def me():
return jsonify({'email': current_user.email}), 200
@app.route('/authorize/')
def oauth_authorize(provider):
if not current_user.is_anonymous:
return redirect(WEB_URL)
oauth = OAuthSignIn.get_provider(provider)
return oauth.authorize()
@app.route('/callback/')
def oauth_callback(provider):
if not current_user.is_anonymous:
return redirect(WEB_URL)
oauth = OAuthSignIn.get_provider(provider)
social_id, username, email = oauth.callback()
if social_id is None:
return redirect(WEB_URL)
user = User.select().where(User.social_id == social_id).first()
if not user:
user = User(social_id=social_id, nickname=username, email=email)
user.save()
login_user(user, True)
return redirect(WEB_URL)
因此,我从fronend调用/authorize/,然后重定向到/callback/并让用户登录。在
现在,当我在浏览器上打开/me时,它可以很好地返回所需的json或将我重定向到主页。在
但是当我试图从frontend或Postman获取api时,要么是找不到用户(如果我删除装饰器login_required),要么是返回整个主页。在
我是这样说的:
^{pr2}$
我的frontend正在http://localhost:3000/上运行
得到了答案
后端在导入烧瓶后添加此行CORS(app, supports_credentials=True)
并使用fetch('http://localhost:5000/me', {
method: 'GET',
credentials: 'include'
})