簡體   English   中英

Omniauth-facebook彈出式身份驗證不返回omniauth.auth

[英]Omniauth-facebook popup authentication does not return omniauth.auth

我已經為此掙扎了兩天:

我已經用Devise正確實現了Omniauth-factbook。 現在,我想通過使Facebook身份驗證出現在彈出窗口中而不是去facebook.com來改進它。 我跟着Ryan的RailsCast並添加display => 'popup'在我的供應商配置omniauth.rb

我成功地將登錄加載到Facebook,並返回了一個哈希request.authRequest,其中包含有關userId的信息。

但是,當我回到回調路徑(/ auth / facebook / callback)時,沒有像以前那樣從request.evn [omniauth.auth]中獲取:provider和:uid。

為什么即使Facebook API返回了身份驗證哈希也沒有創建omniauth哈希? 我該怎么做才能解決此問題?

我處理Facebook回調的控制器很簡單:

class ServicesController < ApplicationController
  def create
    auth = request.env["omniauth.auth"]
    debugger

就在調試器上,當我使用IRB進行檢查時,request.env中沒有omniauth哈希。

順便說一句,我想我在我的coffeescript文件中打開了cookie:

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: '<%= "myAppID" %>', cookie: true)

  $('#facebook_signin').click (e) ->
    e.preventDefault()
    FB.login (response) ->
      window.location = '/auth/facebook/callback' if response.authResponse

  $('#facebook_signout').click (e) ->
    FB.getLoginStatus (response) ->
      FB.logout() if response.authResponse
    true

謝謝。

更新:我的omniauth.rb看起來像這樣:

Rails.application.config.middleware.use OmniAuth::Builder do
  # The following is for facebook
  provider :linkedin, '3yn', 'iMJ'
  provider :twitter, 'SQ', 'T5fo'
  provider :facebook, '081', 'e80',
           scope: "email"
end

(我在這里是新手時,我必須回答而不是發表評論。)

您似乎在混淆一些事情。 指定:display => 'popup'不會觸發彈出窗口。 這是一個與Facebook相關的選項,用於指定登錄表單的顯示模式(在此處說明: https : //developers.facebook.com/docs/reference/dialogs/oauth/

將omniauth facebook登錄名變成彈出窗口,可以解釋發生了一些事情,但是您可能不想維護自己的彈出窗口。 Facebook的JavaScript SDK通過FB.login函數實現此功能(在此處說明: https : //developers.facebook.com/docs/reference/javascript/FB.login/

沒有發布所有相關代碼,很難進行故障排除。 從您寫的內容看來,JavaScript方面工作正常。 出於好奇,您的omniauth.rb初始化程序是什么樣的?

我做了一些測試,並閱讀了有關railscast的評論,您需要將gem降級

gem'omniauth-facebook','1.4.0'

如果您需要更多相關信息:

http://railscasts.com/episodes/360-facebook-authentication?view=comments#comment_159418

這里的代碼: https : //github.com/senayar/facebook_connect

希望能幫助到你 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM