我是Omniauth的新手。我正在制作一个玩具应用程序。它显示一个随机的句子,就是这样。我正在使用Sinatra + Omniauth。我想把它变成一个Facebook应用程序。 我基本上遵循了这个教程: http://devcenter.heroku.com/articles/facebook (当前应用程序位于:http://frasesbarrio.heroku.com/)
我已将fb应用指向http://frasesbarrio.heroku.com/
我有这段代码:
use OmniAuth::Builder do
provider :facebook, APP_ID, APP_SECRET, { :scope => 'status_update, publish_stream, offline_access' }
end
get '/auth/facebook/callback' do
# raise "auth facebook"
session['fb_auth'] = request.env['omniauth.auth']
session['fb_token'] = session['fb_auth']['credentials']['token']
session['fb_error'] = nil
redirect '/'
end
我有几个问题:
当用户请求FB应用时,Facebook会在我的/上发布POST 我觉得这很奇怪,因为我在任何教程中都没有看到类似内容。 我刚才:
post '/' do
redirect "http://localhost:4567/auth/facebook"
get_sentence
@ranking = get_ranking
erb :index
end
这样,用户将被重定向到具有大型facebook标志的画布Facebook页面上的应用程序,如果用户点击它,则认证继续并且他被重定向到/.
我的意思是完全重定向,在facebook画布和域之外。
我看过几个教程,每个人都在做同样的事情,所以我真的不知道会发生什么。
答案 0 :(得分:0)
Facebook在画布中将您的应用程序实现为iFrame。 Facebook的默认行为是通过发出POST请求来请求画布。以下文章中记录了此行为:
http://developers.facebook.com/docs/canvas/post/
您可以通过禁用“POST for Canvas”在应用程序的高级设置中关闭此行为。