0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

x.com twitter api oauthエラー

Last updated at Posted at 2025-11-16

エラー

エラーが発生しました
このページに対するリクエストトークンがありません。アプリケーションが X アカウントを使用するかどうかを確認するために必要な特殊キーです。 送信したサイトまたはアプリケーションに戻って再度お試しください。何らかの手違いがあったかもしれません。

Xに移動.

めんどうくせぇ

原因切り分け

・chromeでログインできる?
→ できない

・シークレットモードでログインできる?
→ できる

この場合は、クッキーが悪さをしている

chromeのクッキーを削除しよう

chrome://settings/siteData
を開く

x.com
api.x.com
twitter.com

を検索して順番に削除する。
すると動くようになる。

他の設定

x にログインして、戻るを押したあとにバグる気がする。
ということで進められたので以下の設定もした。

ご提示いただいた内容を、Qiitaのような技術記事として読みやすく整理します。


🛡️ LaravelのOAuth認証を確実にするCookie設定の極意

ソーシャルログイン(OAuthフロー)の実装において、「リクエストトークンがない」といったエラーに悩まされることは少なくありません。これは、多くの場合、セキュリティ強化のためのブラウザの進化と、アプリケーションのCookie設定が合致していないために起こります。

Laravelでは、SESSION_SECURE_COOKIEsame_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フローでは、アプリケーションは一時トークンをセッションに保存した後、ユーザーを外部プロバイダへリダイレクトします。認証後、プロバイダからアプリケーションへリダイレクトバック(コールバック)されます。

このリダイレクトバックの際に、セッションを維持して一時トークンを読み出すことが必須です。

  1. 'same_site' => 'lax' が、外部からのリダイレクト(GET) 時にセッションCookieの送信を許可します。
  2. SESSION_SECURE_COOKIE=true が、Cookieが最新のセキュリティ要件(HTTPS)を満たしていることを保証し、ブラウザがCookieをブロックするのを防ぎます。

この連携により、「リクエストトークンがない」というセッション消失に起因するエラーを解決し、ソーシャルログインを確実に動作させることができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?