我正在使用django allauth auth系统,我使用社交注册" next"像这样的参数:
The parameter 'b' was not bound in the specified LINQ to Entities query expression
其中next是动态变量。
然而,我想向该过程注入第二个屏幕,要求提供一个发声号码或其他信息。
我想我需要覆盖一个方法来重定向到第二个屏幕并将下一个参数传递给这个视图。
知道要覆盖哪种方法?
编辑: 我想出了如何为"正常"注册流程:
我覆盖了allauth.account.views.SignupView并添加了一个新方法:
<a data-provider="facebook"
href="{% provider_login_url "facebook" method="oauth2" next=next %}">
然后将自定义视图添加到我自己的帐户/注册网址文件中。
但是我无法在社交注册视图中找到该方法。有没有人知道在社交注册视图中评估下一个参数的位置?
EDIT2:
所以我做了一些挖掘。 Flag用于社交登录类方法:
class CustomSignupView(SignupView):
def get_success_url(self):
next_value = (get_next_redirect_url(self.request,
self.redirect_field_name)
or self.success_url)
ret = 'whatever/url?next=' + next_value
return ret
signup = CustomSignupView.as_view()
之后,它将提供程序传递给helpers complete_social_login或complete_social_signup(当被调用时还不确定)。
最后有一个函数account / utils perform_login实际执行重定向。
目前尚未确定在何处覆盖,仍在挖掘。
最后说到:
socialaccount视图调用helpers.complete_social_signup,然后使用重定向URL调用完整注册。
我认为不得不覆盖该视图,然后通过我自己的完整社交注册方法。
EDIT3:
如果您启用了自动签名(我这样做),则永远不会调用SocialSignup ClassView,而是在socialaccount.helpers._process_signup中创建新用户。