ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.
会員登録って、まずメルアドとパスワードを入力してもらって、その後いったんユーザーのメールアドレス宛にメールを送りその中の認証ボタンを押してもらって本会員登録完了!とする、っていうのがよくあるWEBサービスの会員登録の流れですよね。
laravelでもユーザー登録機能を実装するとき、上記のような流れを公式マニュアルを見れば簡単に実装できるようになってるんですが…、
え。
普通にエラー…。
結局、今回エラーが出てしまったのは開発環境だからこそだったのですが、laravelでメール確認を実装してたら「403 INVALID SIGNATURE.」が出てしまった時、それも開発環境で!の場合の治し方を紹介しますね。
仮にこの記事を読んでいる方で「こっちは開発環境じゃなくてエラー出てるんだよな…」という場合でも解決方法は同じ勘どころになると思うので参考にはなると思います。
いきなり解決方法
この「403 INVALID SIGNATURE.」は「.env」ファイルを一行修正すれば治ります。
.env
APP_URL=http://127.0.0.1:8000/「.env」ファイルのAPP_URLの行が最初開発環境だとたぶん「APP_URL=http://localhost」になってると思うんでそれを「http://127.0.0.1:8000/」に変更するだけ。
これで無事「403 INVALID SIGNATURE.」エラーがなくなり、メール確認ができるようになります。
エラーの理由
私自身laravelの奥の方まったくよくわかってないんでググってかいつまんで「へぇー、よくわからないけどそうなってるのかぁ」とよくわからないなりに書くことになるんですが、結局、
- 「403 INVALID SIGNATURE.」というエラーは「SIGNATUREがおかしいよ!」っていうエラー
- 「SIGNATURE」っていうのはメール確認の時にURLの後ろにぐちゃぐちゃついてるあの謎の文字列の事
- 結局、laravelが自分で作ったぐちゃぐちゃとlaravelが本来返してほしいぐちゃぐちゃが違ってるからエラー出てる(自分で作ってるくせに…)
- でlaravelはこのぐちゃぐちゃを作るときに自分のURL(APP_URL)を使ってる
- 開発環境だと「localhost」になってるんで「127.0.0.1:8000」にしてあげればOK!
っていう感じなんだと思います。
まとめ
今回はlaravelで開発環境でメール確認機能を使うと「403 INVALID SIGNATURE.」というエラーが出てしまうときの解決方法を書きました。
まとめると「APP_URL」の設定を見直せば治るよ!という感じ。
実際に厳密にはどういうふうにしてlaravelがこのぐちゃぐちゃ文字列である「SIGNATURE」を作ってるのかよくわかりませんが、開発環境でなくてこのエラーが出てる場合でもURL?ドメイン?周りに着目していけば解決の糸口がつかめそうです。
【おしらせ、というか完全なる宣伝】
文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.
こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /