Я работаю над интеграцией моего приложения на Rails 3.1 с Devise для аутентификации пользователей с моим приложением для iOS.Я бы хотел, чтобы пользователь мог зарегистрироваться из приложения, а затем я могу сохранить эти учетные данные для входа в систему позже.
Используя RestKit, я делаю это:
-(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];
}
The /users.json
URL-адрес: user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
(в соответствии с маршрутами рейка).Похоже, что почтовый вызов принимает разные форматы, поэтому я предполагаю, что он примет JSON.Запрос My Post сериализуется как 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"=>"test1@test.com"}
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 ошибку, и мой пользователь не создан.Ответ, который получает мое iOS-приложение: Response: {"email":["can't be blank"],"password":["can't be blank"]}
.Но пароль и адрес электронной почты не пустые, сервер получил их успешно.Итак, что-то не работает правильно, и я не уверен, куда идти.Как я могу создать пользователя с помощью JSON?
Спасибо за помощь!