LoginSignup
3
3

More than 5 years have passed since last update.

DeviseのFacebook認証でハマった(解決済み)

Posted at

認証時に便利なgemファイル「Devise」を使っていた際に、ハマりました。

2年以上前から、このライブラリを使ってきたのですが、FacebookがHTTPS通信を必須したのにも影響あってか一筋縄では実装できなくなっていたので、備忘録的に残しておきます。
ちなみに、開発環境では問題なく通ったけど、本番でハマったので厄介でした。

1) Deviseのデフォルトになっている「user_facebook_omniauth_authorize_path」はどうやっても、SSLにはできなかったので、今回別にURLをヘルパーで設定することにしました。

registrations.new.html.erb
<!-- <%= link_to user_facebook_omniauth_authorize_path do %> -->
<%= link_to facebook_url do %>
 <div class="btnFacebook">
   <span>
     <i class="fab fa-facebook"></i> Signin with Facebook
   </span>
 </div>
<% end %>
application_helper.rb
module ApplicationHelper
  def facebook_url
    case Rails.env
    when "development"
      "https://www.facebook.com/dialog/oauth?client_id=(クライアントID)&redirect_uri=https%3A%2F%2Flocalhost:3000%2Fusers%2Fauth%2Ffacebook%2Fcallback&scope=email"
    when "production"
      "https://www.facebook.com/dialog/oauth?client_id=(クライアントID)&redirect_uri=https%3A%2F%2F(ドメイン名)%2Fusers%2Fauth%2Ffacebook%2Fcallback&scope=email"
    end
  end

2) FacebookのomniauthのコールバックURLを指定する

devise.rb
・・・
  config.omniauth :facebook,
    Rails.application.credentials[Rails.env.to_sym][:facebook][:app_id],
    Rails.application.credentials[Rails.env.to_sym][:facebook][:app_secret],
    provider_ignores_state: true,
    callback_url: 'https://(ドメイン名)/users/auth/facebook/callback'
・・・

CloudflareでAlways HTTPSしていたからかもしれませんが、関係ないかもしれません。。
いつもスムーズに行くところでハマると、思いがけない工数が発生して焦りますよね。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3