先日、外部サービスとXアカウントとの連携について質問がありました。

インターネットを見ていたら、「〜にアカウントへのアクセスを許可しますか?」という表示がありました。画面の右上には現在ログイン中のアカウント名が表示されているので、そのアカウントで承認されることはわかります。
ただ、実は私、もう一つ別のXアカウントを持っているのですが、そちらは古いメールアドレスで登録していて、パスワードも忘れてしまい、今はログインできない状態なんです。ボタンを押した後で「もしかして、画面をよく見ていなくて、ログインできない方のアカウントで承認してしまったのでは?」と不安になりました。
そもそも、「ログインできないアカウントでアプリ承認はできない」と考えてよいですか?
1. 結論:ログインできないアカウントでは承認できない
「アプリを承認」するには、ブラウザでXにログインしている必要があります。
パスワードを忘れたなどで現在ログインできないアカウントは、そもそもブラウザでログイン操作ができません。過去にアカウントを作成したとしても、いまログインできなければセッションも作られないのです。
したがって、そのアカウントのセッション状態で「アプリを承認」することも不可能、ということなります。意図せずに過去に作ったアカウントがアプリ連携してしまう心配はないわけです。
2. セッション状態:ログイン中を記録しているもの
ここで理解しておきたいのが、ブラウザやアプリの「セッション」という仕組みです。
ブラウザでXにログインすると、そのブラウザには「今、どのアカウントでログインしているか」という情報が保存されます。これを「セッション状態」と呼びます。
つまり、「セッション(Session)」とは、簡単に言えば「ユーザーがサービスにログインしてから、ログアウトするまでの一連の期間・状態」のことです。この情報は、スマホ単位ではなく、ブラウザやアプリ内に記録されます。
このセッション情報は、ログアウトするか一定時間が経過するまで保持され続けます。
だから、一度ログインすれば、しばらくはページを移動しても「ログイン状態」が維持されるわけです。
つまり、ブラウザは常に「今はこのアカウントでログイン中だよ」という情報を持っているんですね。
2.1. なぜセッションが必要か
ここで重要なのは、セッションはパスワードそのものの記憶とは異なります。
つまり、「パスワードマネージャ機能」とは別物だということです。
- セッション:
一度ログインした後、その状態を維持するための仕組み - パスワードマネージャ:
次回ログイン時に入力を省略するための機能
ログイン時に使うのがパスワードマネージャ機能で、ログイン中であることを維持するのがセッション情報です。
そもそも、Webの仕組みは本来「ステートレス」でした。
つまり、1回1回のページ表示は独立していて、前のページで何をしたか覚えていません。
でも、それだとページを移動するたびにログインし直さなければならなくなってしまいます。
そこで「セッション」という仕組みで、「この人はログイン済み」という状態を維持しているんです。
3. 「アプリを承認」画面とセッション
では、外部サービスとXを連携する際の「アプリを承認」画面は、どのように表示されているのでしょうか。
実は、この画面が表示されるまでには、次のような流れがあります。
- 連携したい外部サービス(アプリ)が、Xに対して「このユーザーのアクセス権限を確認したい」と問い合わせます。
- Xは、ブラウザのセッション情報を確認します。「このブラウザは、今どのアカウントでログインしているんだろう?」という確認ですね。
- もしすでにログイン中であれば、そのログイン中のアカウント情報をもとに「アプリを承認」画面を表示します。
- 逆に、ログインしていなければ、先にログインボタンが表示されます。

つまり、「アプリを承認」画面に到達した時点で、既にどのアカウントでログインしているかが確定しているんです。
4. 【補足】Xと連携済みアプリを確認する
ちなみに、現在ログインしているアカウントであれば、実際に連携しているアプリを確認することができます。
- Xにログイン
- 設定を開く
- 「セキュリティとアカウントアクセス」→「アプリとセッション」を選択
- 連携しているアプリの一覧が表示されます
ここに該当のアプリが表示されていれば、そのアカウントで承認済みということです。逆に表示されていなければ、そのアカウントでは承認していないことがわかります。
セッション状態という仕組みを理解すると、アプリ連携のときにどのアカウントが選ばれているのかがわかります。必ず、その時点でログインしているアカウントでしか承認できないようになっているんですね。