我跟着Railscast 360爲我的Rails應用程序設置了Omniauth-Facebook身份驗證。身份驗證運行良好,但我瘋狂地試圖通過範圍請求額外的權限。我知道它們是可用的,因爲我可以手動將範圍請求輸入到URL中。我嘗試了一切,並耗盡了所有的谷歌搜索。Rails 3.2 with Omniauth-Facebook - 權限問題範圍
正如Railscast評論中所建議的,我已將Omniauth-Facebook gem降級到1.4.0,這對我的理解意味着範圍無法作爲來自Omniauth初始化程序的散列傳遞,而是通過JavaScript傳遞。這兩個都不適合我,但不同於我根據Railscast運行咖啡腳本的評論,我已經嘗試過在範圍內的各種位置,但是要麼出現錯誤或者結果不完整。只是電子郵件,沒有user_events等
我知道這裏沒有代碼,但它完全按照每個railscast。
誰也跟着相同的Railscast提供任何建議或者解決1.4.1的問題,所以我可以從初始化程序傳遞範圍散列或如何在運行1.4.0時正確傳遞它。
提前感謝!
更新: 我有點得到某處!但這並不完全正確。任何指針將非常感激。
在我Omniauth初始化我有:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'app_id', 'secret_id', {:scope => 'user_birthday,user_events,email'}
end
(通過實時IDS插入!)
然後我就可以看起來通過將字範圍爲FB.Init的CoffeeScript的範圍內做出正確的請求:
jQuery ->
$('body').prepend('<div id="fb-root"></div>')
$.ajax
url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js"
dataType: 'script'
cache: true
window.fbAsyncInit = ->
FB.init(appId: 'app_id', cookie: true, scope)
$('#sign_in').click (e) ->
e.preventDefault()
FB.login (response) ->
window.location = "/auth/facebook/callback" if response.authResponse
$('#sign_out').click (e) ->
FB.getLoginStatus (response) ->
FB.logout() if response.authResponse
true
(再次用上述插入實際的appid)
然而,這停止彈出工作,所以我很確定我已經把範圍不正確。我看到的其他例子將它放在FB.login中,但是我嘗試在那裏放置錯誤或者根本不起作用。
幫助! :)
您已將'scope'參數放入'FB.init'調用中 - 但它屬於'FB.login'調用,因爲它會調用請求權限的Auth對話框。 – CBroe
謝謝。任何想法,我應該把它放在它,因爲它是在我嘗試時拋出錯誤。 – Raoot
我對coffescript瞭解不多。我建議你檢查真正的編譯JS輸出,並嘗試將它與JS SDK文檔中的代碼進行匹配。 – CBroe