从使用python social auth不提供电子邮件的开放ID检索电子邮件的最佳方法

时间:2014-09-22 16:22:27

标签: python django python-social-auth

我已经在我的django应用程序中成功实现了python social auth但是我注意到twitter没有为我提供保存的电子邮件地址。有没有办法扩展社交认证管道,以便我可以要求新用户的电子邮件地址,如果没有提供?

1 个答案:

答案 0 :(得分:3)

这样做的方法是使用一个函数扩展默认管道,该函数检查是否提供了电子邮件,而不是请求提供电子邮件。检查https://github.com/omab/python-social-auth/blob/master/examples/django_example处的示例应用程序,它使用此管道https://github.com/omab/python-social-auth/blob/master/examples/django_example/example/app/pipeline.py执行此操作。

基本上流程是:

  1. 用户注册twitter
  2. 该管道检查用户是否是新用户以及auth提供商是否返回了电子邮件
  3. 如果没有电子邮件,则将用户重定向到表单,否则继续(表单POST到/complete/twitter,这样auth进程将在停止的地方继续)
  4. 再次运行管道功能,但在请求POST数据中检测到电子邮件
  5. 管道将电子邮件存储在details中,稍后用于创建用户