通过本机iOS应用程序使用Desive创建用户帐户

通过本机iOS应用程序使用Desive创建用户帐户,ios,ruby-on-rails,json,devise,Ios,Ruby On Rails,Json,Devise,我有一个本地Rails应用程序,用于身份验证(使用模块)。使用现有帐户,我可以在获得令牌后使用JSON在本机iOS应用程序中成功执行API调用 我想添加通过iOS应用程序创建新帐户的功能,无需使用浏览器。Desive是否只允许通过HTML创建帐户 我看过这篇文章 并通过CURL尝试了各种方法,包括: $ curl -H "Content-Type: application/json" -d '{"email":"who@me.com","password":"mypass"}' -vX POS

我有一个本地Rails应用程序,用于身份验证(使用模块)。使用现有帐户,我可以在获得令牌后使用JSON在本机iOS应用程序中成功执行API调用

我想添加通过iOS应用程序创建新帐户的功能,无需使用浏览器。Desive是否只允许通过HTML创建帐户

我看过这篇文章

并通过CURL尝试了各种方法,包括:

$ curl -H "Content-Type: application/json" -d '{"email":"who@me.com","password":"mypass"}' -vX POST http://localhost:5000/users.json
...
* Connected to localhost (127.0.0.1) port 5000 (#0)
> POST /users.json HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:5000
> Accept: */*
> Content-Type: application/json
> Content-Length: 44
> 
* upload completely sent off: 44 out of 44 bytes
< HTTP/1.1 406 Not Acceptable 
< Content-Type: application/json; charset=utf-8
< X-Ua-Compatible: IE=Edge
< Cache-Control: no-cache
< X-Request-Id: 338234ca2a6c378426ab67d7a080d44e
< X-Runtime: 0.006427
< Server: WEBrick/1.3.1 (Ruby/1.9.3/2012-12-25)
< Date: Sat, 09 Feb 2013 23:11:19 GMT
< Content-Length: 1
< Connection: Keep-Alive
< Set-Cookie: _MyRailsApp_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRkkiJTY1ZWIzMTdiYzc5ODdmMzNkOWI5MDM4NTMzYTQ0MWVkBjsAVA%3D%3D--c5871e8577987f36c614483b7a28b08fed55b7b8; path=/; HttpOnly
$curl-H“内容类型:应用程序/json”-d'{“电子邮件”:who@me.com“,”密码“:“mypass”}'-vX POSThttp://localhost:5000/users.json
...
*已连接到本地主机(127.0.0.1)端口5000(#0)
>POST/users.json HTTP/1.1
>用户代理:curl/7.24.0(x86_64-apple-darwin12.0)libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
>主机:本地主机:5000
>接受:*/*
>内容类型:application/json
>内容长度:44
> 
*上传已完全发送:44个字节中的44个
为设备启用json

config.navigational_formats=[“/”,:json]

并添加新文件

class RegistrationsController < Devise::RegistrationsController

  def create

    @user = User.create(params[:user])
    if @user.save
      render :json => {:state => {:code => 0}, :data => @user }
    else
      render :json => {:state => {:code => 1, :messages => @user.errors.full_messages} }
    end

  end
end
更新

此外,json应该看起来:

{"user" : {"email":"who@me.com","password":"mypass"}}
为Desive启用json

config.navigational_formats=[“/”,:json]

并添加新文件

class RegistrationsController < Devise::RegistrationsController

  def create

    @user = User.create(params[:user])
    if @user.save
      render :json => {:state => {:code => 0}, :data => @user }
    else
      render :json => {:state => {:code => 1, :messages => @user.errors.full_messages} }
    end

  end
end
更新

此外,json应该看起来:

{"user" : {"email":"who@me.com","password":"mypass"}}

为了让它与HTML和JSON一起工作,我最终得到了这个解决方案:谢谢!我需要向白名单:email和:password的控制器添加一个私有方法user_params。我还必须按照建议禁用CSRF保护。为了让它与HTML和JSON一起工作,我最终得到了这个解决方案:谢谢!我需要向白名单:email和:password的控制器添加一个私有方法user_params。我还必须按照建议禁用CSRF保护。