エラー
エラーが発生しました
このページに対するリクエストトークンがありません。アプリケーションが X アカウントを使用するかどうかを確認するために必要な特殊キーです。 送信したサイトまたはアプリケーションに戻って再度お試しください。何らかの手違いがあったかもしれません。
Xに移動.
めんどうくせぇ
原因切り分け
・chromeでログインできる?
→ できない
・シークレットモードでログインできる?
→ できる
この場合は、クッキーが悪さをしている
chromeのクッキーを削除しよう
chrome://settings/siteData
を開く
x.com
api.x.com
twitter.com
を検索して順番に削除する。
すると動くようになる。
他の設定
x にログインして、戻るを押したあとにバグる気がする。
ということで進められたので以下の設定もした。
ご提示いただいた内容を、Qiitaのような技術記事として読みやすく整理します。
🛡️ LaravelのOAuth認証を確実にするCookie設定の極意
ソーシャルログイン(OAuthフロー)の実装において、「リクエストトークンがない」といったエラーに悩まされることは少なくありません。これは、多くの場合、セキュリティ強化のためのブラウザの進化と、アプリケーションのCookie設定が合致していないために起こります。
Laravelでは、SESSION_SECURE_COOKIEとsame_siteの設定を適切に行うことで、OAuth認証を安全かつ確実に行うことができます。
🔒 1. SESSION_SECURE_COOKIE=true の設定
この設定は、セッションCookieにSecure属性を付与し、HTTPS環境でのみCookieの送受信を許可するセキュリティ対策です。
意味と役割
Laravelが発行するセッションCookieにSecureフラグが付与されます。
- HTTPS強制: ブラウザは、暗号化されたHTTPS接続でのみサーバーへこのCookieを送信します。
- 目的: 盗聴や改ざんを防ぐため、HTTP(非暗号化)通信経由でCookieが誤って送信されるのを防ぎます。
メリットとデメリット
| 項目 | メリット | デメリット |
|---|---|---|
| セキュリティ | 中間者攻撃 (Man-in-the-Middle) によるセッションCookieの盗聴リスクを完全に排除し、セッションハイジャックを防ぎます。 | 開発環境やステージング環境がHTTPの場合、セッションが一切機能しなくなるため、本番環境でのみ利用が前提となります。 |
| 動作保証 | 近年のブラウザは、より厳格なCookie属性(特にSameSite属性)の適用条件としてHTTPS接続を求めているため、他のセキュリティ機能の動作を保証する土台となります。 |
🍪 2. 'same_site' => 'lax' の設定
この設定は、セッションCookieにSameSite=Lax属性を付与し、Cookieがクロスサイトリクエストで送信される条件を制限するセキュリティ対策です。
意味と役割
セッションCookieにSameSite=Laxフラグが付与されます。
- SameSite属性: Cookieが、現在アクセスしているサイト(ファーストパーティ)以外のサイト(クロスサイト)からのリクエストで送信されるかを制御します。
- Laxモード: セキュリティと利便性のバランスを取ったモードです。
LaxモードでのCookie送信条件
| リクエストタイプ | Cookie送信 | 説明 |
|---|---|---|
| 内部サイト遷移 | 送信される | 例: /profileから/settingsへの遷移。 |
| 外部サイトからのGETリダイレクト | 送信される | OAuth認証フローのコールバックがこれに該当します。リンククリックなど、トップレベルの安全なナビゲーションの場合に許可されます。 |
| 外部サイトからのPOST/iframe/画像 | 送信されない | CSRF攻撃に利用されやすいリクエストでは送信がブロックされます。 |
メリットとデメリット
| 項目 | メリット | デメリット |
|---|---|---|
| セキュリティ | CSRF (Cross-Site Request Forgery) 攻撃に対して非常に強力な防御策となります。 | 他サイトのiframe内にアプリケーションを埋め込むなど、サードパーティCookieとして動作させる特殊なユースケースには適していません。 |
| OAuthフロー | 外部認証プロバイダ(X/Twitterなど)からアプリケーションのコールバックURLへ戻る際のセッション消失を防ぎます。セッションCookieが送信されることで、Socialiteがセッションに保存した一時トークンを読み出せます。 |
🎯 結論:OAuthにおける重要性(トークンエラー解消)
OAuthフローでは、アプリケーションは一時トークンをセッションに保存した後、ユーザーを外部プロバイダへリダイレクトします。認証後、プロバイダからアプリケーションへリダイレクトバック(コールバック)されます。
このリダイレクトバックの際に、セッションを維持して一時トークンを読み出すことが必須です。
-
'same_site' => 'lax'が、外部からのリダイレクト(GET) 時にセッションCookieの送信を許可します。 -
SESSION_SECURE_COOKIE=trueが、Cookieが最新のセキュリティ要件(HTTPS)を満たしていることを保証し、ブラウザがCookieをブロックするのを防ぎます。
この連携により、「リクエストトークンがない」というセッション消失に起因するエラーを解決し、ソーシャルログインを確実に動作させることができます。