8

たとえば、ユーザー登録とログインに Facebook ログインのみを使用したい場合、つまりローカル登録/ログインフォームを使用しない場合、Flask-Social と Flask-Security を使用することは可能ですか?

Flask-Social のサンプル アプリケーションとドキュメントを調べましたが、これが可能かどうかわかりませんでした。サンプル アプリケーションでは、ユーザーは事前に登録していない限り、Facebook でログインできません。サンプル アプリケーションに登録した後、Facebook アカウントをローカル アカウントに関連付けることができます。

social.facebook.get_connection() を呼び出そうとしたとき、登録/ログイン後にフラスコセキュリティによって定義されている がAttributeError 'AnonymousUser' object has no attribute 'id'ないため、 を取得しました。current_user

4

1 に答える 1

5

@login_failed.connect_viaこれは、デコレータを使用して余計な作業をしなくても実行できます。appFlask アプリのインスタンスとして使用すると、次のようになります。

@login_failed.connect_via(app):
def on_login_failed(sender, provider, oauth_response):
    connection_values = get_connection_values_from_oauth_response(provider, oauth_response)
    ds = current_app.security.datastore
    user = ds.create_user( ... ) #fill in relevant stuff here
    ds.commit()
    connection_values['user_id'] = user.id
    connect_handler(connection_values, provider)
    login_user(user)
    db.commit()
    return render_template('success.html')

ユーザーを作成するための関連項目の入力に関しては、パスワード用のランダムな文字列を作成するだけで、電子メールを null のままにする問題はありませんでした。Flask-Social github pageにもまったく同じ回答を含めました。

于 2013-12-16T04:08:29.690 に答える