如何用oauth为每个按钮分配不同的设计?

时间:2015-10-27 15:46:06

标签: ruby-on-rails ruby oauth

我希望允许客户将自己与Facebook和G +身份验证联系起来。 我的问题是我不知道如何为每个按钮分配不同的设计,因为我的链接呼叫每个提供商。我怎么能清楚地打电话给他们呢?

以下是我的观点代码:

        <%- if devise_mapping.omniauthable? %>
      <%- resource_class.omniauth_providers.each do |provider| %>
        <%= link_to omniauth_authorize_path(resource_name, provider) do %>
        <div class="fb-connect"> <%= image_tag('f-facebook.png', alt: "fb", class: "mini-fb") %>&nbsp;&nbsp;Inscription avec facebook</div>
        <% end %>
     <% end %>
    <% end %>

如您所知,两个按钮(fb + G +)看起来像Facebook按钮。

这是我的omniauth_callbacks_controller.rb:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def self.provides_callback_for(provider)
class_eval %Q{
def #{provider}
@user = User.find_for_oauth(env["omniauth.auth"], current_user)

if @user.persisted?
sign_in_and_redirect @user, event: :authentication
set_flash_message(:notice, :success, kind: "#{provider}".capitalize) if is_navigational_format?
else
session["devise.#{provider}_data"] = env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
}
end

[:twitter, :facebook, :linkedin, :google_oauth2].each do |provider|
provides_callback_for provider
end

def after_sign_in_path_for(resource)
if resource.email_verified?
    super resource
    else
    finish_signup_path(resource)
end
end
end 

0 个答案:

没有答案