如何检查是否用户与omniauth签署(How to check if user is signed

2019-10-20 00:31发布

我对色器件上运行的应用程序,并为omniauth用户注册。 然而,当有人使用omniauth与Facebook登录我想,以显示该用户的一些额外的信息。 不过,我不能找到一种方法来确定,如果该用户与Facebook登录。

我相信它有事情做与devise_helper(user_signed_in?),但我不知道如何与omniauth使用它。

user.rb

  def self.find_for_facebook_oauth(auth)
    where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
      user.name = auth.info.name
      user.provider = auth.provider
      user.uid = auth.uid
      user.email = auth.info.email
      user.password = Devise.friendly_token[0,20]
      user.username = auth.info.email
      user.token = auth.credentials.token
      user.save!
    end
  end

devise.rb

config.omniauth :facebook, ENV["APP_ID"], ENV["APP_SECRET"],
      {:scope => 'email, offline_access', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}} 

<% if current_user.token %>
    <% @graph = Koala::Facebook::API.new(current_user.token) %>
    <%= @friends = @graph.get_connections("me", "friends").to_a %>
        <%= @friends.each do |friend| %>
            <%= puts friend["name"] %>
        <% end %>
<% end %>
文章来源: How to check if user is signed in with omniauth