401の場合はAPIキーが間違ってる可能性があるが、403の場合は恐らくTwitterのCallbackURLの設定が間違っている。こっちから投げるrequestのCallbackURLと
Authentication settingsで設定しているCallbackURLが一致してないと403を返す。
なお、RailsのWebConsoleでresponse.bodyを入力するとエラーメッセージがわかる。
エラー画面の下でピョコピョコ動いてるやつ。
ちなみにデフォルトの設定は以下なので、丸パクリしてTwitterのAuthentication settingsで設定すれば良いと思う。
Devise+omniauth+omniauth-twitterの場合
http://localhost:3000/users/auth/twitter/callback
omniauth+omniauth-twitterの場合
http://localhost:3000/auth/twitter/callback
※ドキュメントにはlocalhostにするなって書いてあるけどlocalhostでも認証はできる
※2 omniauthのcallbackのデフォルトの挙動は、遷移元のURLにサフィックスとして/auth/twitter/callbackをつけてcallbackurlとして投げているので、開発環境に127.0.0.1でアクセスしている時はTwitterの設定を「http://127.0.0.1:3000/auth/twitter/callback」に変更する必要がある。
これで時間を失った…。