繁体   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