WebからXへシェアする機能を実装したところ、Xアプリが起動 -> アプリ内ブラウザ起動 -> Safariへリダイレクト -> Xアプリ起動という無限ループに陥った。
調査の結果、Intent URLのエンドポイントによって挙動が異なることが判明したので備忘録として残す。
環境
発生した問題
Webサイトにシェアボタンを実装し、/intent/post を使用したところ以下の無限ループが発生:
調査
Intent URLの種類
以下の2種類のエンドポイントが存在する:
https://x.com/intent/tweet https://x.com/intent/post
挙動の違い
/intent/tweet
- Xアプリがネイティブで起動
- 投稿画面が直接開く
- 正常動作
/intent/post
- Xアプリは起動する
- しかしアプリ内ブラウザが起動
- そのブラウザ内で投稿画面が表示される
- 無限ループの原因
公式ドキュメントの確認
X Developer Platform の公式ドキュメントを確認したところ、/intent/tweet のみが記載されている。
/intent/post については記載がない。
対応
Intent URLの変更
- https://x.com/intent/post?text=... + https://x.com/intent/tweet?text=...
結論
- 使用すべきは
/intent/tweet - 公式ドキュメントに記載されている
- 挙動が安定している
感想
リブランディングで「これからはPostだ」という方針だったので /intent/post を使っていたが、無限ループに陥って調査したところ、公式ドキュメントには記載すらされていなかった。
結局 /intent/tweet に戻すことで解決した。
公式ドキュメントは大事。