我正在使用 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 和电子邮件。任何帮助将不胜感激。