Aplikacja na FB - parsowanie signed_request

Witajcie,

Mam taki problem, Poniższy kod parsuję signed_request i na podstawie niego wyciągam id fanpage na którym jestem. Problem w tym, że FB czasem mi tego nie przekazuję(signed_request) i muszę ręcznie wywołać url do logowania potem znowu przekazuję. Może ktoś kto robił app w canvas (w tabie) miał podobny problem a może ktoś zna jakiś GEM do tego.

Mój kod wygląda tak:

[code] def parse_signed_request
@oauth ||= Koala::Facebook::OAuth.new(APP_ID, SECRET)
signed_request = @oauth.parse_signed_request(params[:signed_request]) rescue {}
if !session[‘page_id’]
session[‘page_id’] = signed_request[‘page’][‘id’]
session[‘page_id_app’] =Fanpage.find_by_uid(signed_request[‘page’][‘id’]).id.to_i
end

if signed_request['app_data']
  session['app_data'] = signed_request['app_data']
  redirect_to vcard_path :card_id => signed_request['app_data']
end

end[/code]

Facebook przekazuje signed_request tylko raz - “na dzień dobry” i tylko jako post params. Ponadto dla canvas signed_request wygląda inaczej niż dla taba (patrz np. app_data czy page).
Odpowiednia kombinacja Koali, zmiennych sesji i warunków powinna Ci wystarczyć.

Pisząc canvas miałem na myśli TAB rzecz jasna to przecież to też canvas.
Wiem, że przekazuje tylko raz “na dzień dobry”. Ale mi cały czas działa. Ale tester wyłapał taki błąd, że odpala app i signed_request było puste… (odpalał pierwszy raz)

Dodałem
gem ‘facebook-signed-request’
i w ustawieniach app na FB w adresie Canvas URL dodałem “/” na końcu może to pomoże.
Tak pisało kilka osób na http://stackoverflow.com

Zobaczymy co z tego wyjdzie.