Problem z działaniem aplikacji FB jako IFrame

Hej, piszę sobie aplikację na FB z wykorzystaniem RoR, korzystam z gema Koala i z tego tutoriala: http://3adly.blogspot.com/2012/12/ruby-on-rails-facebook-application.html

Napisałem sobie aplikację dokładnie i mam problem. Jak odpalę sobie na localhoście albo produkcji i wchodzę bezpośrednio przez przeglądarkę to ładnie działa i wyświetla moje imię. Jednakże jak chcę to zrobić przez IFrame w FB to dostaje pustą stronę. Zauważyłem, że nie miałem ustawionego routingu POST, więc dodałem. Innych błędów w logu nie widzę.

W logach widzę, że aplikacja działa i przekierowuje mnie na facebook.com/oauth… etc. Jak wkleję ten link do przeglądarki to pokazuje się to co ma się pokazywać i to co jest wyświetlane jak wejdę na stronę bezpośrednio, jednakże nie jest to wyświetlane w IFrame.

Macie może jakieś propozycje jak to rozwiązać?

Facebook blokuje wyświetlanie swojej strony w ramce.

EDIT: ok, za rano wstałem. Ty chcesz, żeby FB wyświetlło Twoją stronę w ramce, nie na odwrót.

Nowe railsy domyślnie dodają do nagłówków regułę blokującą wyświetlanie aplikacji w ramce:

X-Frame-Options: SAMEORIGIN

Możesz zmienić ten nagłowek w konkretnej akcji

response.headers['X-Frame-Options'] = 'ALLOWALL'

bądź globalnie dla całej aplikacji (config/application.rb)

config.action_dispatch.default_headers = {
  'X-Frame-Options' => 'ALLOWALL'
}

Aplikacja FB łączy się po https a nie po http, możesz użyć gemu tunnels żeby łączyło się z twoją aplikacją uruchomioną lokalnie.

Musisz tylko pamietać, żeby zaakceptować certyfikat https na twojej domenie po https, jak tego nie zrobisz, to dalej będziesz miał pustą stronę.

Dzięki problem był właśnie w X-Frame-Options. Poprawiłem i wszystko ładnie działa.

Hej, niestety zauważyłem dzisiaj, że jak usunę uprawnienia aplikacji z mojego profilu na FB to mam problem z połączeniem:

...F%2F&scope=read_stream' in a frame because it set 'X-Frame-Options' to 'DENY'. 

Muszę wejść na stronę aplikacji bokiem, w sensie nie przez apps.facebook.com (aplikacja nie jest wyświetlana w ramce) i zaakceptować uprawnienia, wtedy działa dobrze zarówno jak wpiszę adres bezpośrednio, jak i przez iframe…

To sugeruje, że ciągle masz jakieś akcje, które zwracają nagłówek X-Frame-Options z wartością DENY. Ustawiłeś to globalnie czy w konkretnej akcji?

Mam to w config/application.rb, czyli globalnie. Dokładnie to coś takiego.

 module TestApp
 class Application < Rails::Application
 # Settings in config/environments/* take precedence over those specified here.
 # Application configuration should go into files in config/initializers
 # -- all .rb files in that directory are automatically loaded.

 # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
 # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
 # config.time_zone = 'Central Time (US & Canada)'

 # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
 # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
 # config.i18n.default_locale = :de
 config.action_dispatch.default_headers = {
  'X-Frame-Options' => 'ALLOWALL'
 }
 end
end