JSON

2012-01-12 19 views
7

से डेविस में उपयोगकर्ता बनाएं I अपने आईओएस ऐप के साथ उपयोगकर्ता प्रमाणीकरण के लिए मेरे रेल 3.1 एप चलाने वाले डिवाइस को एकीकृत करने पर काम कर रहा हूं। मैं चाहता हूं कि उपयोगकर्ता एप्लिकेशन से पंजीकरण करने में सक्षम हो, और फिर मैं उन प्रमाणपत्रों को बाद में लॉगिन करने के लिए स्टोर कर सकता हूं।JSON

RestKit का उपयोग करना, मैं यह कर: (रेक मार्गों के अनुसार) user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}:

-(IBAction)registerUser:(id)sender { 
    NSDictionary *params = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects: 
                   self.email.text, 
                   self.password.text, 
                   self.confirmPassword.text, 
                   nil] 
                 forKeys:[NSArray arrayWithObjects: 
                   @"email", 
                   @"password", 
                   @"password_confirmation", 
                   nil]]; 

    [[RKClient sharedClient] post:@"/users.json" params:params delegate:self]; 
} 

/users.json यूआरएल को जाता है। ऐसा प्रतीत होता है कि पोस्ट कॉल अलग-अलग प्रारूप स्वीकार करता है, इसलिए मुझे लगता है कि यह JSON स्वीकार करेगा। मेरा पोस्ट अनुरोध जेएसओएन के रूप में क्रमबद्ध है, और भेज दिया गया है। सर्वर यह हो जाता है, और इस लॉग है:

Started POST "/users.json" for 129.21.84.10 at 2012-01-12 15:33:57 -0500 
    Processing by Devise::RegistrationsController#create as JSON 
    Parameters: {"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "email"=>"[email protected]"} 
WARNING: Can't verify CSRF token authenticity 
    User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
    (0.3ms) BEGIN 
    (0.2ms) COMMIT 
    (0.2ms) BEGIN 
    (0.4ms) ROLLBACK 
Completed 422 Unprocessable Entity in 93ms (Views: 3.8ms | ActiveRecord: 10.2ms) 

मैं एक 422 त्रुटि मिलती है, और मेरे उपयोगकर्ता नहीं बनाई गई है। मेरा आईओएस ऐप प्राप्त प्रतिक्रिया है: Response: {"email":["can't be blank"],"password":["can't be blank"]}। लेकिन पासवर्ड और ईमेल खाली नहीं है, सर्वर उन्हें सफलतापूर्वक मिला। तो, कुछ सही काम नहीं कर रहा है, और मुझे यकीन नहीं है कि कहां जाना है। मैं JSON का उपयोग कर उपयोगकर्ता कैसे बना सकता हूं?

मदद के लिए धन्यवाद!

+0

क्या आपने कभी यह काम किया है? – Quentamia

+0

नहीं, लेकिन मैं इसे काम करने की आवश्यकता के बिना आगे बढ़ गया। मुझे भविष्य में इसकी आवश्यकता हो सकती है हालांकि ... –

उत्तर

5

आपका रेल एप्लिकेशन इस रूप में JSON उम्मीद कर रही है: "उपयोगकर्ता"

{"email":"[email protected]", "password":"Test123", "password_confirmation":"Test123"} 

को जोड़ने के लिए आप सिर्फ इस तरह rootKeyPath निर्धारित करने की आवश्यकता:

{"user":{"email":"[email protected]", "password":"Test123", "password_confirmation":"Test123"}} 

लेकिन डिफ़ॉल्ट RestKit द्वारा इस भेज रहा है :

RKObjectMapping *userSerializationMapping = [userMapping inverseMapping]; 
userSerializationMapping.rootKeyPath = @"user"; 
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:userSerializationMapping forClass:[User class]]; 
5

मैं सिर्फ एक ही चीज़ पर काम कर रहा हूं - एक आईफोन ऐप से डेविस में उपयोगकर्ताओं को बना रहा हूं।

{"user":{"email":"[email protected]", "password":"Test123", "password_confirmation":"Test123"}} 

और यूआरएल::

http://localhost:3000/users.json

और अपनी पोस्ट के अनुरोध हेडर सामग्री प्रकार है 'आवेदन/मैं इसे json कि इस तरह दिखता है पोस्टिंग द्वारा इलाज काम कर रहा है json '।

सभी मानक डिवाइस कॉन्फ़िगरेशन।

+2

मुझे यहां 406 त्रुटि कोड मिलते हैं। – quantumpotato

+1

@quantumpotato अजीब! क्या आपने कोशिश की है [यह] (http://stackoverflow.com/questions/3751030/rails-3-returning-a-http-406-not- अस्वीकार्य) –

+3

@quantumpotato डेविस 406 फेंक रहा है क्योंकि यह केवल HTML के रूप में HTML स्वीकार करता है 2.2। जैसा कि यहां दिखाया गया है, आपको JSON को स्वीकार करने के लिए इसे स्पष्ट रूप से सेट करना होगा: https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.2 – jesal