X/Twitter APIの仕様が変更されてから、SwarmでチェックインしてもX/Twitterに連携されなくなりました。
一部のユーザーにおいてSwarmからTwitter(𝕏)へチェックインの自動共有ができない問題については、引き続き調査中ですが、基本的にはTwitter APIの仕様変更に起因するものです。この共有機能の今後については現在検討が進められています。
— Foursquare PM Japan (@4sqJPN) 2023年7月28日
本現象について、一向に修正される様子がないため、勉強がてら自分で連携アプリを作ることにしました。
仕様
- チェックイン時にFoursquareからWebhookを受け取り、X/Twitterに投稿する。
- コメントの有無に関わらず、投稿内容は以下とする。
I'm at [場所名] in [住所]
[共有URL] - X/Twitterに画像は投稿しない。(※そのうち対応するかも)
- 共有ボタンを押さずにチェックインした場合、X/Twitterに投稿しない。
- Webアプリは自宅のサーバに配置する。
実装
1. アクセストークンの取得とAPI操作
Foursquare
まず、Foursquare Developer Console に登録し、OAuth認証のための設定をします。
次に、ドキュメント を参考に、WebアプリからOAuth認証(認可)を開始し、アクセストークンを取得します。
API操作にはライブラリを利用しません。
3. Webhookの受け取り
Foursquare Developer Console 上で、Webhookの受け取り先(URL)を設定します。
Webhookの内容は ドキュメント を参考にします。
4. 投稿内容の作成
Webhookの内容だけではX/Twitterに投稿する内容が作成できないため、必要に応じてFoursquare APIを呼び出します。
今回必要な情報は、チェックインの詳細を取得するAPI で取得できるため、本APIを利用します。
なお、共有用URLですが、Swarmが正しく連携されていた頃までは https://www.swarmapp.com/c/*** と短い形式でしたが、
APIで取得できるのは https://www.swarmapp.com/[ユーザ名]/checkin/[チェックインID]?s=*** とかなり長い形式となっています。
旧形式のURLを取得できないか調べてみましたが、今のところ方法は無さそうでした。まぁ長くても実質問題はないのですが...
また、https://www.swarmapp.com/[ユーザ名]/checkin/[チェックインID] がチェックインのオリジナルのURLなので、
?s=*** の部分は無くても良いのでは?と思うかもしれませんが、これが無いと他のユーザが閲覧できないため注意してください。
成果物
GitHubに公開しています。ご参考まで。
github.com