Nic*_*sky 6 python flask oauth-2.0 google-oauth
我很难用Flask-Dance实现Google OAuth.这是交易.为了使一切工作我需要设置offline=True
和reprompt_consent=True创建Google蓝图时:
google_bp = make_google_blueprint(
client_id="trololo",
client_secret="ololo",
offline=True,
reprompt_consent=True,
scope=["email"],
redirect_url="/callback/google"
)
Run Code Online (Sandbox Code Playgroud)
然而,reprompt_consent=True每当用户登录时,自然会使应用程序重新启动用户进行脱机访问.
这两个参数的任何其他组合导致丢失refresh_token了Oauth2lib.
我本身不需要脱机访问,但正如我所知,它似乎是逃避丢失参数错误的唯一方法.那么有没有其他方式通过Flask-Dance登录谷歌并获得refresh_token传递?
特别是在 Google 的 Flask dance 中,您需要实现 aBackend来存储 OAuth Dance 中的任何内容。这是文档中的一个片段,可帮助您入门。
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)
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,您现在可以查询用户的 SQL 数据库。
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |