2017-01-22 18 views
3

Flask-DanceでGoogle OAuthを実装するのは難しいです。ここでの取引です。すべての作業を行うために、私は、Googleの青写真の作成時にoffline=Truereprompt_consent=Trueを設定する必要があります。Flask-Dance経由でGoogle APIでトークンを更新

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自然にオフラインアクセスするたびにユーザログをアプリの再プロンプトユーザーを作成し

任意の他の組み合わせをこれらの2つのパラメータのうちOauth2libにはrefresh_tokenがありません。

私はオフラインアクセス自体は必要ありませんが、私が思ったように、欠落しているパラメータエラーから逃げる唯一の方法と思われます。だからFlask-Dance経由でGoogleにログインし、refresh_tokenを渡す方法はありますか?

答えて

1

特にGoogleのフラスコダンスでは、Backendを実装して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) 

、あなたは今のユーザーのためのSQL DBを照会することができます。

+0

ありがとうマイク!上記のスニペットが上記の問題にどのように関係しているかわかりません。もちろん、私のアプリケーションにはDBがありますが、質問は同意を再確認せずにログインする方法でした –

関連する問題