2017-02-04 8 views
8

मैं Django allauth प्रमाणन प्रणाली का उपयोग कर रहा हूँ और मैं इस तरह "अगले" पैरामीटर के साथ सामाजिक साइन अप का उपयोग करें:दूसरा सामाजिक साइन अप करने के लिए स्क्रीन के लिए साइन अप जोड़ें allauth

<a data-provider="facebook" 
    href="{% provider_login_url "facebook" method="oauth2" next=next %}"> 

जहां अगले एक गतिशील है चर।

हालांकि मैं प्रक्रिया के लिए दूसरी स्क्रीन इंजेक्ट करना चाहता हूं, यानी एक फोन नंबर या अन्य जानकारी मांगना चाहता हूं।

मुझे कल्पना है कि मुझे दूसरी स्क्रीन पर रीडायरेक्ट करने के लिए एक विधि को ओवरराइड करने और इस दृश्य में अगला पैरामीटर पास करने की आवश्यकता होगी।

कोई विचार जो ओवरराइड करने का तरीका है?

संपादित करें: मैं पता लगा कि कैसे "सामान्य" के लिए साइन अप प्रवाह के लिए यह करने के लिए:

मैं allauth.account.views.SignupView overrode और एक नई पद्धति कहा:

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() 

और उसके बाद अपने स्वयं के खातों/साइनअप यूआरएल फ़ाइल में कस्टम दृश्य जोड़ा।

लेकिन मैं उस विधि को सामाजिक साइन अप दृश्य में नहीं ढूंढ सकता। क्या किसी के पास कोई विचार है जहां सोशल साइन अप व्यू में अगला पैरामीटर का मूल्यांकन किया जाता है?

संपादित 2:

तो मैंने कुछ खुदाई की। फ्लैग sociallogin classmethod में प्रयोग किया जाता है:

@classmethod 
def state_from_request(cls, request): 
    if next_url: 
     state['next'] = next_url 
    return state 

उसके बाद अपने सहायकों complete_social_login या complete_social_signup (यकीन नहीं अभी तक क्या कहा जाता है जब) करने के लिए प्रदाता से अधिक पारित कर दिया।

अंत में एक फ़ंक्शन खाता/utils perform_login है जो वास्तव में रीडायरेक्ट निष्पादित करता है।

सुनिश्चित नहीं है कि अभी तक ओवरराइड कहां है, अभी भी खोदना है।

तो अंत में यह आता है करने के लिए:

socialaccount दृश्य helpers.complete_social_signup जो तब पुनर्निर्देश url के साथ पूरा साइनअप कॉल कहते हैं।

मुझे लगता है कि बीमार को उस दृश्य को ओवरराइड करना है और फिर अपना पूरा सामाजिक साइनअप विधि पास करना है।

Edit3:

आप autosignup सक्षम किया है (जो मैं करता हूँ) SocialSignup ClassView लागू किया जा कभी नहीं होगा, बजाय नया उपयोगकर्ता socialaccount.helpers._process_signup में बनाया जाता है।

+0

क्या आप सामाजिक उपयोग से अधिकृत होने से पहले अतिरिक्त जानकारी मांगना चाहते हैं? या के बाद? –

+0

इसके बाद, इसलिए मैं उनके सामाजिक डेटा की पुष्टि कर सकता हूं और अतिरिक्त जानकारी पूछ सकता हूं। – Julian

उत्तर

0

forking Django-allauth समाप्त और बस एक प्रतिदेय बुलाया ACCOUNT_SIGNUP_REDIRECT के लिए एक सेटिंग जोड़ने।

def custom_signup_redirect(success_url): 
    ret = '/whatever/url/?next=' + success_url 
    return ret 

और फिर सेटिंग्स में:

ACCOUNT_SIGNUP_REDIRECT = 'myapp.utils.custom_signup_redirect' 

देखें this प्रतिबद्ध।

संबंधित मुद्दे