ブログの記事を投稿したらMastodonでトゥートする(IFTTT使用)

ブログの記事を投稿したらMastodonでトゥートする方法。

ていうか外部からMastodonにトゥートさせる、そうOAuthの話です。

TwitterのOAuth連携機能を作ったことのある人にはおなじみのアレね。アレがマストドンにもあるので。

Mastodonへのアプリケーション登録

参考:documentation/API.md at master · tootsuite/documentation · GitHub

まず最初にアプリケーション登録を行う必要がある。

https://インスタンス名/api/v1/apps に以下のパラメータをつけてPOSTリクエストする。

POSTリクエストができればいいので方法はおまかせします。

client_name
クライアント名。適当につけて。
redirect_uris
リダイレクト先。リダイレクトしない場合は urn:ietf:wg:oauth:2.0:oob を設定する。
scopes
readwritefollow のいずれかもしくは複数を選択。複数選択時は半角スペースで区切る。今回はブログ記事を投稿したいので write
website
アプリ名(via)をクリックしたときの飛び先。省略可能。

成功するとJSONが返却されるので、その中の client_idclient_secret をメモしておく。

Mastodonアカウントへのアプリケーション認証

登録したアプリケーションを自分のアカウントに認証させる。

参考:documentation/OAuth-details.md at master · tootsuite/documentation · GitHub

認証コードの取得

以下のURLにアクセスする。

(例)

すると「アプリ XXX(さっき設定したclient_name)があなたのアカウントへのアクセスを要求しています」という画面になるので「承認」をクリック。

mastodon_01

「認証コードをコピーしてアプリに貼り付けて下さい。」と出るので、この値をコピーする。

mastodon_02

アクセストークンの取得

https://インスタンス名/oauth/token に以下のパラメータをつけてPOSTリクエストする。

grant_type
authorization_code
redirect_uri
さっきの redirect_uris と同じ値
client_id
さっきのJSONの client_id の値
client_secret
さっきのJSONの client_secret の値
code
さっきコピーした認証コードの値

成功するとJSONが返却されるので、access_token の値をメモしておく。投稿時に必要になる。

認証済みアプリの確認

「ユーザ設定」→「アカウント」→「認証済みアプリ」で、正しく追加されていることを確認する。

mastodon_03

mastodon_04

IFTTT の設定

さて、あとはIFTTTを設定するだけ。

this

RSS Feed → New feed item で、自分のブログのRSSフィードを読むようにする。

that

  • Webhooks → Make a web request を選択する。
  • URL には https://インスタンス名/api/v1/statuses を設定する。
  • Method は 「POST」を選択する。
  • Content Type は 「application/x-www-form-urlencoded」を選択する。
  • Body は 「access_token=(さっきメモした access_token の値)&status=(好きな値を適当に設定)&visibility=(公開範囲)」 を設定する。
    • 公開範囲は directprivateunlistedpublic のいずれかを設定する。
  • (例)
    access_token=XXXXX&status={{EntryTitle}} {{EntryUrl}}&visibility=public