Bir sürü cevabı olan tek soru. Ben son tarih gününde geceleri 10:30 'da çalışması için bunun için mücadele ederken ben keşke rehber hoş geldiniz ... FB tuval uygulamaları ile bazı garip şeyler yapar, ve iyi, uyarıldı. Hala buradaysanız ve bir Facebook Canvas'ın arkasında görünecek bir Rails uygulamanız varsa, ihtiyacınız olacak:
Gemfile:
gem "rack-facebook-signed-request", :git => 'git://github.com/cmer/rack-facebook-signed-request.git'
config / facebook.yml
facebook:
key: "123123123123"
secret: "123123123123123123secret12312"
config / application.rb
config.middleware.use Rack::Facebook::SignedRequest, app_id: "123123123123", secret: "123123123123123123secret12312", inject_facebook: false
yapılandırma / başlatıcılar / omniauth.rb
OmniAuth.config.logger = Rails.logger
SERVICES = YAML.load(File.open("#{::Rails.root}/config/oauth.yml").read)
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, SERVICES['facebook']['key'], SERVICES['facebook']['secret'], iframe: true
end
application_controller.rb
before_filter :add_xframe
def add_xframe
headers['X-Frame-Options'] = 'GOFORIT'
end
Facebook'un tuval ayarlarından aramak için bir denetleyiciye ihtiyacınız var, kullandım /canvas/
ve rotayı SiteController
bu uygulama için ana konuma getirdim:
class SiteController < ApplicationController
def index
@user = User.new
end
def canvas
redirect_to '/auth/failure' if request.params['error'] == 'access_denied'
url = params['code'] ? "/auth/facebook?signed_request=#{params['signed_request']}&state=canvas" : "/login"
redirect_to url
end
def login
end
end
login.html.erb
<% content_for :javascript do %>
var oauth_url = 'https://www.facebook.com/dialog/oauth/';
oauth_url += '?client_id=471466299609256';
oauth_url += '&redirect_uri=' + encodeURIComponent('https://apps.facebook.com/wellbeingtracker/');
oauth_url += '&scope=email,status_update,publish_stream';
console.log(oauth_url);
top.location.href = oauth_url;
<% end %>
Kaynaklar
- Bence yapılandırma omniauth örneğinden geldi.
- Gem dosyası (ki anahtar !!!) geldi: öğrendim slideshare şeyler ...
- Bu yığın sorusunun tamamı Xframe açısına sahipti, bu nedenle bu başlığı uygulama denetleyicisine koymazsanız boş bir alan elde edersiniz.
- Ve adamım @rafmagana , bu cevapla ve birlikte yürüdüğünüz devlerin omuzları için benimseyebileceğiniz bu heroku rehberini yazdı .