Pracuję nad integracją mojej aplikacji Rails 3.1 z uruchomioną wersją Devise w celu uwierzytelnienia użytkownika w mojej aplikacji na iOS. Chciałbym, aby użytkownik mógł się zarejestrować z poziomu aplikacji, a następnie mogę zapisać te dane logowania, aby zalogować się później.Utwórz użytkownika w programie Devise z JSON
Korzystanie RestKit, mogę to zrobić:
-(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
url idzie: user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
(według tras kasę). Wygląda na to, że połączenie post akceptuje różne formaty, więc zakładam, że zaakceptuje JSON. Żądanie Mojej poczty jest serializowane jako JSON i wysyłane. Serwer otrzymuje go i jest to dziennik:
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)
Otrzymuję błąd 422, a mój użytkownik nie jest tworzony. Odpowiedź otrzymywana przez moją aplikację na iOS to: Response: {"email":["can't be blank"],"password":["can't be blank"]}
. Ale hasło i adres e-mail nie są puste, serwer je pomyślnie. Tak więc coś nie działa poprawnie i nie jestem pewien, gdzie się udać. Jak mogę utworzyć użytkownika za pomocą JSON?
Dzięki za pomoc!
Czy zdarzyło Ci się, że to działa? – Quentamia
Nie, ale ruszyłem dalej bez potrzeby działania. Być może będę go potrzebować w przyszłości ... –