iOS(swift)アプリ上でログイン機能を実装したいです。データはrailsアプリ(サーバー)にあります。このrailsアプリはapiモードではなく、普通のモード(viewが含まれる)で使っています。
iOS側からAlamofireを使って、rails側にhttpリクエスを送っているのですが、rails側でエラーが発生します。rails側でデータを受け取っているのは確認しています。どなたか知恵を貸していただけませんでしょうか?どうしても解決できませn。
コードは以下です。
swift
1#loginBUttonActionを押すとrails側にhttpリクエスト(post)します 2@IBAction func loginButtonAction(_ sender: Any) { 3 let params: [String: String] = [ 4 "email": "hogehoge.test@fake.com", 5 "password": "aaaaaa" 6 ] 7 Alamofire.request("https://hogehoge.herokuapp.com/api/v1/sessions/login", method: .post, parameters: params).responseJSON(completionHandler: { response in 8 print(response.value) 9 }) 10 }
rails
1class Api::V1::SessionsController < ApplicationController 2 # 色々試した 3 # protect_from_forgery prepend: true, with: :null_session 4 # protect_from_forgery with: :null_session 5 # skip_before_action :verify_authenticity_token 6 # protect_from_forgery prepend: true, with: :exception 7 protect_from_forgery except: :login 8 9 def login 10 user = User.find_by(email: params[:email]) 11 if user && user.valid_password?(params[:password]) 12 order = user.orders.where(state:"is_rented").try!(:first) 13 if order.present? 14 stock_info = order.rentals.map do |_rental| 15 _stock = _rental.stock 16 {uuid: _stock.uuid, major: _stock.major, minor: _stock.minor} 17 end 18 render json: {access_token: user.access_token, start_date: order.start_date, end_date: order.end_date, stock_info: stock_info}, status: 200 19 else 20 render json: {access_token: user.access_token, start_date: nil, end_date: nil, stock_info: nil}, status: 200 21 end 22 else 23 render json: {error:"Emailかパスワードが間違っています"}, status: 422 24 end 25 end 26 27end 28
エラー内容は以下です。これはrailsアプリがデプロイされたherokuのログです
heroku
1INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Started POST "/api/v1/sessions/login" for 126.74.149.104 at 2018-02-25 10:26:16 +0000 2INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Processing by Api::V1::SessionsController#login as */* 3INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Parameters: {"email"=>"hogehoge.test@fake.com", "password"=>"[FILTERED]", "default"=>{"format"=>:json}} 4DEBUG -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] User Load (4.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "hogehoge.test@fake.com"], ["LIMIT", 1]] 5DEBUG -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] params:{"email"=>"hogehoge.test@fake.com", "password"=>"aaaaaa", "default"=>{"format"=>:json}, "controller"=>"api/v1/sessions", "action"=>"login"} 62018-02-25T10:26:16.719039+00:00 app[web.1]: 7INFO -- : [36f35f26-caa7-40b5-8d2b-c0c69e47321a] Completed 422 Unprocessable Entity in 93ms (Views: 9.0ms | ActiveRecord: 25.6ms) 82018-02-25T10:26:16.730962+00:00 heroku[router]: at=info method=POST path="/api/v1/sessions/login" host=stark-earth-51396.herokuapp.com request_id=36f35f26-caa7-40b5-8d2b-c0c69e47321a fwd="126.74.149.104" dyno=web.1 connect=1ms service=131ms status=422 bytes=394 protocol=https
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。