Я использую библиотеку Flask-Dance для входа пользователей в Google.Я могу успешно аутентифицировать пользователей, но код в @ oauth_authorized.connect_via (google_blueprint) никогда не выполняется.Я попытался переименовать некоторые чертежи / методы, но, похоже, ничего не работает.Я знаю, что эта проблема характерна для входа в Google, потому что я попробовал этот же код с Twitter и GitHub, и все работало отлично.Есть ли какая-то конкретная концепция входа в Google, которую мне не хватает?
Код:
google_blueprint = make_google_blueprint(client_id='CLIENT_ID_HERE',client_secret='SECRET_HERE')
app.register_blueprint(google_blueprint,url_prefix='/google_login')
google_blueprint.backend = SQLAlchemyBackend(OAuth, db.session,user=current_user,user_required=False)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(15), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(80))
payed = db.Column(db.Boolean)
class OAuth(OAuthConsumerMixin, db.Model):
user_id = db.Column(db.Integer,db.ForeignKey(User.id))
user = db.relationship(User)
@app.route('/google')
def google_login():
if not google.authorized:
return redirect(url_for('google.login'))
return redirect(url_for('dashboard'))
@oauth_authorized.connect_via(google_blueprint)
def google_is_logged_in(blueprint,token):
global paying_dude
account_info = blueprint.session.get('/user')
if account_info.ok:
account_info_json = account_info.json()
username = account_info_json['first_name']
query = User.query.filter_by(username=username)
try:
user=query.one()
except NoResultFound:
user = User(username=username,payed=False)
db.session.add(user)
db.session.commit()
paying_dude = username
return redirect(url_for('pay'))
if user.payed:
login_user(user)
return redirect(url_for('dashboard'))
return redirect(url_for('pay'))