2

我是 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 标志的 canvas facebook 页面上的应用程序,如果用户单击它,身份验证将继续,他将被重定向到 /。

我的意思是完全重定向,在 facebook 画布和域之外。

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

4

1 回答 1

0

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

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

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

于 2011-03-08T15:58:08.353 回答