为什么我的 Flask 应用程序无法使用 Python Social Auth 创建新用户?

Why my Flask application can't create new user using Python Social Auth?

我正在使用 python-social-auth 包,它有一个相当奇怪的行为,也就是说,我可以使用已经在数据库中注册的现有 gmail 帐户登录,但我无法注册新用户。

实际上,这是一个 dockerize Flask 应用程序(在 app.py 中)。如果我不使用 supervisord,所有 Python 社交身份验证行为都可以正常工作。也就是说,我直接调用python app.py,而不是在supervisord.conf.

中通过supervisord配置成运行

但是如果我使用supervisord,新用户将无法注册。应用程序将被定向到登录页面。

注意:另一方面,我正在尝试使用 Flask-OAuth 重写社交实现。

终于找到bug了。这些是已确认 oauth 进程的自定义管道的代码修复:

def pipeline_oauth_confirmed(backend, user, response, *args, **kwargs):
   user.active = True
   user.confirmed_at = datetime.now()
   db_session.commit()

由于应用程序需要 user.active=True 才能让用户登录,因此用户不会登录。我省略了 db_session.commit() 调用。一旦添加,它就起作用了!