Я сделал тестовое приложение facebook, чтобы поиграть, и я использую сеансы для хранения аутентификации. Я использую омниаут. Когда я вхожу в систему с http://fbbtest.heroku.com/, а затем обновляю страницу, сеанс все еще сохраняется, и в нем говорится, что я вошел в систему. Когда я пробую его с холста http://apps.facebook.com/herokutestapp/ он регистрирует меня, перенаправляет обратно и говорит, что я вошел в систему, но затем, когда я вручную обновляю его, он говорит, что я не вошел в систему. Есть ли что-то особенное, что я должен делать с сеансами в rails 3, чтобы он также работал на холсте facebook?
Это то, что у меня сейчас есть в моих контроллерах и представлениях
def index
end
def create
session['fb_auth'] = request.env['omniauth.auth']
session['fb_token'] = session['fb_auth']['credentials']['token']
session['fb_error'] = nil
redirect_to root_path
end
def destroy
clear_session
redirect_to root_path
end
def failure
clear_session
session['fb_error'] = 'In order to use this site you must allow us access to your Facebook data<br />'
redirect_to root_path
end
def clear_session
session['fb_auth'] = nil
session['fb_token'] = nil
session['fb_error'] = nil
end
Представление индекса
<div class="container">
<h1>Heroku FB Test application</h1><br />
<div class="center"><br />
<%=session[:fb_error]%>
<% if session[:fb_token] %>
<p>
Successfully logged in.
</p>
<a href='logout'>Logout</a>
<% else %>
<%= session[:fb_error] %><br />
<%= link_to "Log in with Facebook", "/auth/facebook",:class => "popup", :"data-width" => 600, :"data-height" => 400 %> <br />
<p>
please log in
</p>
<% end %>
</div>
</div>