2017-01-22 3 views
3

У меня с трудом реализуется Google OAuth с Flask-Dance. Вот сделка. Для того, чтобы сделать все работы мне нужно установить offline=True и reprompt_consent=True при создании Google план:.Обновить токен с помощью API Google через Flask-Dance

google_bp = make_google_blueprint(
    client_id="trololo", 
    client_secret="ololo", 
    offline=True, 
    reprompt_consent=True, 
    scope=["email"], 
    redirect_url="/callback/google" 
) 

Однако reprompt_consent=True естественно делает пользователю приложение reprompt для автономного доступа каждые журналы времени пользователя в

Любая другая комбинация из этих 2 параметров приводит к отсутствию refresh_token для Oauth2lib.

Мне не нужен автономный доступ как таковой, но, как я понял, это единственный способ избежать этой ошибки. Итак, есть ли другой способ войти в систему с помощью Google с помощью Flask-Dance и узнать, что прошло refresh_token?

ответ

1

В частности, в фляжном танце для Google вам необходимо реализовать Backend, чтобы сохранить что-либо из танца OAuth. Вот фрагмент документов, чтобы начать работу.

from flask_sqlalchemy import SQLAlchemy 
from flask_login import current_user 
from flask_dance.consumer.backend.sqla import OAuthConsumerMixin, SQLAlchemyBackend 

db = SQLAlchemy() 

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    # ... other columns as needed 

class OAuth(OAuthConsumerMixin, db.Model): 
    user_id = db.Column(db.Integer, db.ForeignKey(User.id)) 
    user = db.relationship(User) 

blueprint.backend = SQLAlchemyBackend(OAuth, db.session, user=current_user) 

В приведенном выше примере вы можете запросить SQL db для пользователя.

+0

Спасибо, Майк! Я не уверен, как приведенный выше фрагмент относится к заявленной проблеме. Естественно, у меня есть БД в моем приложении, но вопрос заключался в том, как войти в систему без согласования –

Смежные вопросы