omn​​iauth-facebook陷入INFO - omniauth:(facebook)请求阶段已启动

时间:2014-08-21 15:02:20

标签: ruby-on-rails facebook devise omniauth

我对Rails相对较新,我在使用omniauth-facebook时遇到了问题。我已设法将“登录Facebook”链接添加到我的应用程序中(详细信息如下),当我点击它时,我将被带到:

https://www.facebook.com/dialog/oauth?client_id=etc

它不加载任何东西。甚至没有任何有用的错误消息。 :(只是一个空白的白色屏幕。

当我读取我的rails日志时,它停留在:

  

在2014-08-21 10:48:30 -0400开始获取127.0.0.1获取“/ users / auth / facebook”   I,[2014-08-21T10:48:30.308966#29948] INFO - omniauth:(facebook)发起请求阶段。

我能找到的另一个类似问题的帖子是here。我按照建议更改了我正在处理的端口,但它没有任何区别。

所以,更多细节:

我使用Railscasts,Omniauth文档以及互联网上的不同指南几个小时来修补这个问题。每一次尝试都把我引向了同样的砖墙。目前,我正在关注this OmniAuth overview for Facebook with Devise over at GitHub并已跟进添加

  

%li = link_to“使用Facebook登录”,user_omniauth_authorize_path(:facebook)

到我的布局。

我有

  

宝石'omniauth'

     

gem'omniauth-facebook'

在我的gemfile中。

已添加

  

设计:omniauthable,:omniauth_providers => [:Facebook的]

到我的User.rb文件,将uid和provider列添加到我的Users表中,并添加了

  

config.omniauth:facebook,'KEY','SECRET'

to config / initializers / devise.rb。

这是我添加到一个非常基本的应用程序中的所有内容,该应用程序只有Devise User模型和一些与我的域相关的其他模型。

有人可以帮我解决这个问题吗?这让我疯了。

修改

我正在使用Rails 4.1.4和Ruby 2.1.2以及最新的omniauth和omniauth-facebook gems。

的routes.rb

devise_for :users, :controllers => { :omniauth_callbacks => 'users/omniauth_callbacks' }
resources :users, :only => [:show, :index]
root 'main#index'

和rake路线:

                  Prefix Verb     URI Pattern                            Controller#Action
        new_user_session GET      /users/sign_in(.:format)               devise/sessions#new
            user_session POST     /users/sign_in(.:format)               devise/sessions#create
    destroy_user_session DELETE   /users/sign_out(.:format)              devise/sessions#destroy
           user_password POST     /users/password(.:format)              devise/passwords#create
       new_user_password GET      /users/password/new(.:format)          devise/passwords#new
      edit_user_password GET      /users/password/edit(.:format)         devise/passwords#edit
                         PATCH    /users/password(.:format)              devise/passwords#update
                         PUT      /users/password(.:format)              devise/passwords#update
cancel_user_registration GET      /users/cancel(.:format)                devise/registrations#cancel
       user_registration POST     /users(.:format)                       devise/registrations#create
   new_user_registration GET      /users/sign_up(.:format)               devise/registrations#new
  edit_user_registration GET      /users/edit(.:format)                  devise/registrations#edit
                         PATCH    /users(.:format)                       devise/registrations#update
                         PUT      /users(.:format)                       devise/registrations#update
                         DELETE   /users(.:format)                       devise/registrations#destroy
 user_omniauth_authorize GET|POST /users/auth/:provider(.:format)        users/omniauth_callbacks#passthru {:provider=>/facebook/}
  user_omniauth_callback GET|POST /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:facebook)
                   users GET      /users(.:format)                       users#index
                    user GET      /users/:id(.:format)                   users#show
                    root GET      /                                      main#index

我已经添加了omniauth_callbacks控制器,并了解我之前没有做过的事情 - 指向该控制器以查找不在Devise :: OmniauthController中的操作不添加路由,正如我最初想的那样。无论如何,这并没有解决我的Facebook问题,但我认为我会编辑这个以纠正我之前的误解。

更多修改

我让omniauth-github使用以下内容:

routes.rb中:

devise_for :users, :controllers => { :omniauth_callbacks => 'omniauth_callbacks' }
resources :users, :only => [:show, :index]
root 'main#index'

user.rb:

devise :omniauthable, :omniauth_providers => [:facebook, :github]

omniauth_callbacks_controller.rb

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def github
    @user = User.from_omniauth(request.env["omniauth.auth"])

    if @user.persisted?
      sign_in_and_redirect @user
      set_flash_message(:notice, :success, :kind => "Github") if is_navigational_format?
    else
      session["devise.github_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    end
  end
end

devise.rb:

config.omniauth :github, 'KEY', 'SECRET'

我已成功登录Twitter以同样的方式工作。

我为OmniatuhsCallbackController制作了一个与github动作完全相同的facebook动作,只用facebook代替github,我仍然遇到与facebook相同的问题。

0 个答案:

没有答案