Omniauth + facebook没有按预期工作

时间:2011-03-03 09:42:57

标签: facebook sinatra omniauth

我是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画布和域之外。

我看过几个教程,每个人都在做同样的事情,所以我真的不知道会发生什么。

1 个答案:

答案 0 :(得分:0)

Facebook在画布中将您的应用程序实现为iFrame。 Facebook的默认行为是通过发出POST请求来请求画布。以下文章中记录了此行为:

http://developers.facebook.com/docs/canvas/post/

您可以通过禁用“POST for Canvas”在应用程序的高级设置中关闭此行为。