2011-03-03 15 views
2

我是Omniauth的新手。我正在製作玩具應用程序。它顯示一個隨機的句子,這就是全部。我正在使用Sinatra + Omniauth。我想使它成爲一個Facebook應用程序。 我基本上遵循本教程: http://devcenter.heroku.com/articles/facebook (在當前的應用程序:http://frasesbarrio.heroku.com/Omniauth + Facebook未按預期工作

我已經指出了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 k這很奇怪,因爲我在任何教程中都沒有看到類似的東西。 我剛:

post '/' do 

    redirect "http://localhost:4567/auth/facebook" 

    get_sentence 
    @ranking = get_ranking 
    erb :index 
end 

這樣做,用戶會被重定向到畫布的Facebook頁面上的應用程序有一個大的Facebook標誌,如果它的用戶點擊認證繼續,他將被重定向到/。

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

我已經看過幾個教程,每個人都比我做的一樣,所以我真的不知道會發生什麼。

回答

0

Facebook將您的應用程序實現爲畫布內的iFrame。 Facebook的默認行爲是通過發出POST請求來請求畫布。這種行爲被記錄在以下文章:

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

可以通過禁用「POST的畫布」關閉此行爲在你的應用程序的高級設置。