Closed toke04 closed 10 months ago
参考文献
https://github.com/omniauth/omniauth#getting-started
[現在試したこと] config/initializers/devise.rbからgithub認証を行う方法だと、このような呼ばれ方をする
config.omniauth :github, ENV['GITHUB_ID'], ENV['GITHUB_SECRET']
def self.omniauth(provider, *args)
config = Devise::OmniAuth::Config.new(provider, args)
@@omniauth_configs[config.strategy_name.to_sym] = config
end
そして、READMEにも書かれている一般的な config/initializers/omniauth.rbを使うやり方だと、このようなフローになる
Rails.application.config.middleware.use OmniAuth::Builder do
provider :github, ENV['GITHUB_ID'], ENV['GITHUB_SECRET']
end
module OmniAuth
class Builder < ::Rack::Builder
def provider(klass, *args, **opts, &block)
if klass.is_a?(Class)
middleware = klass
else
begin
middleware = OmniAuth::Strategies.const_get(OmniAuth::Utils.camelize(klass.to_s).to_s, false)
rescue NameError
raise(LoadError.new("Could not find matching strategy for #{klass.inspect}. You may need to install an additional gem (such as omniauth-#{klass})."))
end
end
use middleware, *args, **options.merge(opts), &block
end
問い合わせ中だが、これで解決できるかも
参考文献
rails + github認証の基本的な流れ https://sakitadaiki.hatenablog.com/entry/2021/07/23/152005
まず必要な事として以下がある
[前提条件] 2023/11/02(木)の13時前後にとあるユーザーの方が新規登録に失敗した。 最近のユーザーの新規登録を確認した所、以下のように11/02(木)に3名の新規会員ユーザーがいる。 しかし、面接官の方は新規会員登録に失敗した。
実はこの問題、過去にも報告があった。 https://discord.com/channels/715806612824260640/1067626219237036092/1156519096494604348
問題が報告された日付は9/27、 その日に新規会員できたユーザーは以下
上記のように72人の新規会員がいた。 しかし、昨日と9月に失敗報告があった。
ちなみに自分の環境下で、以下の端末では成功が確認できている
[解決手段] 1に関して、 fly.ioのログ保管期間が短いゆえ、過去のユーザーが失敗した際のログを追うのは難しそう。
2の「ライブラリの仕様を確認する」が現実的かも。
ここで私が予想する原因を書く
a. firefoxからアクセスした? b. githubの認証設定の問題?
aは結構あり得るかもしれない。 firefoxにgituhubログインが対応していないのかもしれない ↑関係ないことが分かった。 リサさんから以下のような報告を頂いているから
bは少し可能性薄いかも。 もしbが原因なら、もっと報告が上がってもおかしくないような気がする。
[現時点でのまとめ(2023/11/03)] ライブラリの仕様を確認するのが早い気がする。 ちょっと完全に予想がつかないが、
となると、ライブラリの仕様 or 私のコーディングに問題がある気がする。 調査次第、報告する
[追記] 9月に失敗報告が上がった次の日以降のログを確認すると、 9月28日~2023年9月30日の間に32人の新規会員ユーザーがいたことが分かった。
ほとんどの方が成功している事を考えると、本当にちょっとした何かが原因でgithub認証に失敗しているように思う。 githubのissueを見に行った方が良いかも
[2023/11/05] githubの方で認証が済んだ後のコールバックの設定は正しそう
仕組みとして、最初にライブラリで実装されている、ここにアクセスを飛ばす。
ここでの認証が終わったら、自分で作ったgithub認証のアクションに飛ばす
アクションの内容
[csrfについて] csrfは関係なさそうに思える。 https://midorimici.com/posts/rails-api-csrf なぜなら、このリクエストを送っている箇所は、このようにrailsで用意した
authenticity_token
を送信しているからである。なので、csrfで認証に落ちるというのはありえない