Câu hỏi duy nhất có một loạt các câu trả lời. Chào mừng bạn đến với hướng dẫn mà tôi ước mình có khi tôi tranh giành nó để làm cho nó hoạt động vào lúc 10:30 tối vào ngày cuối cùng ... FB thực hiện một số điều kỳ lạ với các ứng dụng canvas, và, bạn đã được cảnh báo. Nếu bạn vẫn ở đây và bạn có ứng dụng Rails sẽ xuất hiện phía sau Canvas Facebook, thì bạn sẽ cần:
Đá quý:
gem "rack-facebook-signed-request", :git => 'git://github.com/cmer/rack-facebook-signed-request.git'
cấu hình / facebook.yml
facebook:
key: "123123123123"
secret: "123123123123123123secret12312"
cấu hình / ứng dụng.rb
config.middleware.use Rack::Facebook::SignedRequest, app_id: "123123123123", secret: "123123123123123123secret12312", inject_facebook: false
cấu hình / khởi tạo / 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_controll.rb
before_filter :add_xframe
def add_xframe
headers['X-Frame-Options'] = 'GOFORIT'
end
Bạn cần một bộ điều khiển để gọi từ cài đặt canvas của Facebook, tôi đã sử dụng /canvas/
và thực hiện tuyến đường chính SiteController
cho ứng dụng này:
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 %>
Nguồn
- Cấu hình tôi nghĩ xuất phát từ ví dụ của omniauth.
- Tệp đá quý (là chìa khóa !!!) đến từ: trình chiếu những thứ tôi đã học ...
- Câu hỏi ngăn xếp này có toàn bộ góc Xframe, vì vậy bạn sẽ có một khoảng trống, nếu bạn không đặt tiêu đề này trong bộ điều khiển ứng dụng.
- Và người đàn ông của tôi @rafmagana đã viết hướng dẫn heroku này , bây giờ bạn có thể chấp nhận cho đường ray với câu trả lời này và vai của những người khổng lồ mà bạn đi bộ.