1

私はiOSプログラミングに不慣れで、Rubymotionを使用して最初のアプリケーションを構築しています。私のRubymotionアプリでは、ログインを希望するユーザーを認証するためにWebサーバー(RoRを使用して構築されたアプリ)にPOSTし、RubyMotion用のBubbleWrapgemを使用していますhttps://github.com/rubymotion/BubbleWrap/blob/master/motion/http .rb

def login(sender)
  payload = {email: @email, password: @password}
  BubbleWrap::HTTP.post("http://example.com/sessions", {payload:   payload}) do |response|
  @authCookie = response.headers['Set-Cookie']
 end 
end

認証が成功したら、次のコードを使用してWebアプリケーションからJSONデータを受信します。

BubbleWrap::HTTP.get("http://example.com/events.json", {cookie: @authCookie, :headers=>{"Content-Type"=>'json'} }) do |response|
 puts response.body #testing the response
end

何らかの理由で、POSTリクエストから受信した認証トークンがGETリクエストによって正しく渡されていません。Webアプリでは、認証に失敗するとログインページにリダイレクトされ、それがGETリクエストからの応答(ログインページのHTMLコード)であるため、私はこれを知っています。

Webアプリでの認証チェック:

   def session_check
    if session[:bizid].nil?
     redirect_to login_url
     flash[:notice] = "Please login to view your account!"
     end 
   end

さらに、Webアプリでは、この認証トークンは次の方法で設定されます。

def create
    current_biz = Bizname.find_by_email(params[:email])
        if current_biz && current_biz.authenticate(params[:password])
            session[:bizid] = current_biz.id
            flash[:notice] = 'Login Successful!'

            if current_biz.events.empty?
                redirect_to getsetup_url
            else
                redirect_to  account_summary_url
            end

        else
            flash[:notice] = 'Incorrect Email or Password.'
            redirect_to login_url   
        end 
    end

私がここで間違っているかもしれないことについて何か考えはありますか?

前もって感謝します!

4

1 に答える 1

2

ヘッダーとしてCookieを渡す必要があります。例えば:

BubbleWrap::HTTP.get("http://example.com/events.json", :headers=> {"Content-Type"=>'json', "Cookie" => @authCookie}) do |response|
  puts response.body #testing the response
end
于 2013-04-08T01:58:42.063 に答える