Синатра в фрейме Facebook - PullRequest
       24

Синатра в фрейме Facebook

4 голосов
/ 21 октября 2011

У меня есть страница, запущенная и работающая, (https://blooming -wind-8528.herokuapp.com /) с использованием следующего кода:

App.rb содержит:

require 'rubygems'
require 'sinatra'
require 'open-uri'
require 'json'

#show page
get "/" do
  profile = open("https://graph.facebook.com/me?access_token=#full_access_code_here_removed_for_stackoverflow#").read
  profile = JSON.parse(profile)
  @language = profile['locale'][0..1]

  erb :nofan
end

#redirect for facebook
post "/" do
  redirect "/"
end

views / nofan.erb содержит:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Stestie</title>
    <meta property="og:title" content="No Fan"/>
    <meta property="og:type" content="website"/>
    <meta property="og:url" content="https://blooming-wind-8528.herokuapp.com/"/>
    <meta property="og:image" content="https://blooming-wind-8528.herokuapp.com/images/marker_s.png"/>
    <meta property="og:site_name" content="NO fan"/>
    <meta property="fb:app_id" content="293597294002599" />
    </head>

  <body>
        <p>App running in language: <%= @language %></p>
    </body>
</html>

Теперь странная вещь: в браузере он отлично загружается.Однако на фейсбуке это не работает.Я получаю пустой экран.Однако, когда я вызываю код ошибки (например: изменение токена доступа на что-то неправильное), я получаю полную страницу ошибки синатры внутри iframe ...

Кто-нибудь знает, что я делаю неправильно?

Спасибо!

1 Ответ

13 голосов
/ 21 октября 2011

Синатра пытается избежать атаки клик-джеккингом.

Добавьте эту строку:

set :protection, :except => :frame_options

или эту строку:

disable :protection

для вашего приложения.1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...