0
1

TwitterがXになったことに伴うリダイレクトがおかしい

Posted at

はじめに

僕は、TwitterのシェアボタンからMisskeyへシェアすることができる拡張機能、Twishare to Misskey(以下Twishare)を開発しております。それにあたってひっかかった問題について書きたいと思います。

一つだけ断らせていただきます。僕はネットワークに関してそこまで詳しくないため、この記事内でも不確定な表現や不確実な表現があるかと思います。今後頑張って勉強していくので、温かい目で見ていただくとともに何か間違いがあればコメントやTwitter(頑なにXとは呼ばない)などで指摘していただけると嬉しいです。また、僕自身はおかしいと感じましたが、もしかしたらこれは専門の方々の中では常套手段なのかもしれないので、その場合も教えていただけたら嬉しいです。

記事本文

経緯

皆さんご存じの通り、2024年5月にとうとうtwitter.comがx.comにリダイレクトされることとなりました。やめてほしいです。俺の魂は永遠にTwitterにある。(だまr

まあ決まっちゃったことは仕方ないので、Twishareを更新していきたいと思います。

リダイレクトの仕様を調べる

Twishareでは、twitter.com/intent/tweetに遷移したらMisskeyにシェアするかどうか確認する画面を出すようにしていました。(window.confirmを使ってUIを自作せずに済ましている。実際のコード

このファイルを走らせるかどうかはmanifest.jsonのcontent_scriptsで指定しているのですが、そのURLを変更すればx.com対応ができそうです。

実験しましょう。Twishareを無効化したブラウザで、https://twitter.com/intent/tweet にアクセスしてみましょう。アドレスバーを見ていると、
twitter.com/intent/tweet -> x.com/intent/tweet -> x.com/intent/post
と遷移していることがわかります。

実装してみる

詳しい仕様はわからないですが、この仕様でtwitter.com/intent/tweetとmanifest.jsonで指定しても動作しないようなので、最終的に遷移するx.com/intent/postを指定してあげればよさそうです。はい。

おかしい

以上のように実装してもなんか動かない。

詳しくリダイレクトを観察します。

リダイレクトとかまじで触ったこともなかった分野なので、調べながら見てみます。
リダイレクトはサーバーサイドとクライアントサイドがあるらしい。サーバーサイドの場合はステータスコードが30xになるらしい。

以下はURLがx.com/intent/postに変わったあたりまでのスクショです。下のほうはたぶん画面描画に関連する取得っぽいのであんま関係なさそうですね。
image.png

なってますね。
...ところで、ステータスコード302は一時的な移動らしい。もしかしたらtwitter.comに戻ることがあるのかも?コロコロ変えるのやめてほしいなぁ

その後、x.com/intent/tweetを取得してますね。
...ん??/intent/post は取得していない???

仮説

x.com/intent/tweet/intent/postは実体は同じで、前者を読み込んでからアドレスバーだけ何らかで書き換えてるのかもしれない???
そんなことできるのか?

この場合、x.com/intent/postにリクエストを送ったという事実はないので、(それはデベロッパーツールを見てもわかる)いくらmanifest.jsonにcontent_scripts指定を書いても実行されませんね。

ということでmanifest.jsonにはx.com/intent/tweetと記述します。

検証

image.png

できた。

さいごに

なんでcontent_scriptsに twitter.com/intent/tweetx.com/intent/tweetx.com/intent/post 3つ指定しないのか、と聞かれるかもしれませんが、これするとリダイレクトが実行されるたびに確認画面が出てくるので普通にUXが悪いんです。

Misskeyユーザーの方、ぜひ使ってね。

0
1
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
1