Flask-Dance SQLAlchemy 集成不起作用



我正在使用Flask-Dance使用Google登录我的应用程序。我也在使用SQLAlchemy和Flask-Login。

有关Google登录的所有内容都运行良好,但是它应该将令牌数据保存在SQLAlchemy(flask_dance_oauth(创建的表中,但事实并非如此。每次登录时,它都不会将令牌数据保存在表中,即使我指定了它。

from app import db
from flask_dance.contrib.google import make_google_blueprint
from flask_dance.consumer.storage.sqla import SQLAlchemyStorage
from flask_login import current_user
from Tables import OAuth

blueprint = make_google_blueprint(
client_id="clientid",
client_secret="secret",
scope=['https://www.googleapis.com/auth/userinfo.profile', 'https://www.googleapis.com/auth/userinfo.email',
'openid'],
storage=SQLAlchemyStorage(OAuth, db.session, user=current_user))

还有我的SQLAlchemy课程:

from app import db
from datetime import *
from flask_dance.consumer.storage.sqla import OAuthConsumerMixin
from flask_login import UserMixin

class Users(UserMixin, db.Model):
__bind_key__ = 'users'
id = db.Column(db.Integer, primary_key=True)
uuid = db.Column(db.String(50), index=True, unique=True)
email = db.Column(db.String(100), unique=True)
fname = db.Column(db.String(20))
lname = db.Column(db.String(20))
authenticated = db.Column(db.Boolean, default=True)

class OAuth(OAuthConsumerMixin, db.Model):
__bind_key__ = 'users'
user_id = db.Column(db.String(50), db.ForeignKey(Users.uuid))
user = db.relationship(Users)

奇怪的是,我在另一个项目中做了完全相同的代码,并且效果很好。但在这一个中它不会。可能是因为用户表的构建方式吗?这里的那个有名字和姓氏,但我制作的另一个项目中的 User 表只有 UUID 和电子邮件。任何帮助将不胜感激。

你解决了这个问题吗?数据库中的 OAuth 表名称是什么?如果不是flask_dance_oauth,那么在我看来,您缺少 OAuth 表的表名。它应该是:

class OAuth(OAuthConsumerMixin, db.Model):
__bind_key__ = 'users'
__tablename__ = 'flask_dance_oauth'
user_id = db.Column(db.String(50), db.ForeignKey(Users.uuid))
user = db.relationship(Users)

Flask Dance 在您的数据库中需要此表,并更新该用户的令牌以供重用等。

最新更新