Twitterのソーシャルログイン準備でどハマりしたこと
Twitterのソーシャルログインなんて簡単簡単、なんて思っていたら、思いのほかどハマりしたのでメモ。
ソーシャルログインするときは、Twitter開発者プラットフォームに登録をして管理画面からclient_id
とclient_secret
を手に入れなければならない。
で、管理画面を見て下に書いてあるOAuth 2.0 Client ID and Client Secretというところの設定をコピーして使おうとしたんですが間違いでした。
正しくは上のConsumer Keysの方を使います。
これに気がつかず、半日以上時間が溶けた・・
設定しても全然動かなくって、401 Unauthorizedのエラーメッセージが出たまま悩んだ挙句、このオチとは・・
同じようなことで悩んでいる方に届くといいなと思います。
omniauth-twitterで簡単にソーシャルログインはできる
RailsならOmniAuthでソーシャルログインやると思いますが、omniauth-twitterというのがあってこっちは本当に簡単です。
以下のようにconfig/omniauth.rb
に追加したらそれでOK。client_idとclient_secretのところは上記で書いているようにConsumer Keysから発行したものを使いましょう。
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter,
Rails.application.credentials.dig(:twitter, :client_id),
Rails.application.credentials.dig(:twitter, :client_secret)
# 他にもいくつかprovider設定が書かれている
end
いや、しかし、あの管理画面は紛らわしい・・・
この記事の環境情報
- Ruby 3.1.2
- rails 7.0.4
- omniauth 2.1.0
- omniauth-twitter 1.4.0
- Twitter blue申し込んだ
Rubyに関する他の記事を読む
- slimでtype='application/ld+json'のscriptタグを書く
- Slack APIによる自動メッセージでユーザーグループにメンションする方法
- RubyでUnixtimeからTimeオブジェクトを生成する
- gemインストール時にUndefined symbols for architecture arm64と出たときの対応
- RubyでUTCの時刻情報をJST基準に変換する
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら