マストドン流行ってますね。私の立てたグンマストドンも完全にローカルインスタンスではあるものの少しずつユーザも増えているようです。放っておいてもユーザ増えるとかどんだけhotなんだという感じですよね。
グンマストドン
https://gunmastodon.com
さて、ここまで盛り上がってくるとどうしてもコマンドラインからインスタンスにトゥートしたくなることもあると思います。色々便利ですからね。今回はそのやり方をご紹介します。私が試した中では、以下の方法が簡単で早くできました。5分もあれば終わるのではないでしょうか。
Contents
全体の流れ
1.リモートでトゥートするユーザを任意のインスタンスに用意します
2.任意のインスタンスに対して、クライアント登録します。クライアントというのは、例えば今日の天気botみたいのを作ろうとしたときのアプリ名みたいなものです。クライアント投稿が完了するとクライアントid(client_id)と秘密鍵(client_secret)が返却されます
3.client_idとclient_secretを使って投稿に必要なアクセストークン(access_token)を取得します。
4.access_tokenを使って任意の文字列をトゥートします。
ユーザの作成
普通に任意のインスタンスにユーザを作ってください。既存のユーザを使ってもOK。
クライアント登録
以下を実行します。
scopesは任意ですが「read write follow」と入れておけば全ての権限を使えます。
1 2 3 4 |
curl -X POST -sS https://インスタンスのドメイン/api/v1/apps \ -F "client_name=クライアント名を入力" \ -F "redirect_uris=urn:ietf:wg:oauth:2.0:oob" \ -F "scopes=read write follow" |
うまくいくと以下のような結果が返ってきます
client_idとclient_secretは必要なのでメモっておきます
1 |
{"id":100,"redirect_uri":"urn:ietf:wg:oauth:2.0:oob","client_id":"クライアントID","client_secret":"秘密鍵"} |
アクセストークンを取得
それぞれ適宜埋めて実行します。scopeは最初に指定したものと同じものを使います。なお何故か最初はscopesだったものが、ここではscope。あとで修正されるかもなので注意です。あと地味にはまったのが「client_id=クライアントID」などを指定するとき間にスペースが入ってしまいエラーになることがあることです。何気に気づきにくいので注意しましょう。
1 2 |
curl -X POST -sS https://インスタンスのドメイン/oauth/token \ -d "scope=write read follow&client_id=クライアントID&client_secret=秘密鍵&grant_type=password&username=最初に作ったユーザのメールアドレス&password=最初に作ったユーザのパスワード" |
うまくいくとアクセストークンが返却されます
1 |
{"access_token":"アクセストークン","token_type":"bearer","scope":"write read follow","created_at":1492700000} |
アクセストークンを使ってトゥートします
1 |
curl -F "status=トゥートしたい本文を入れます" -sS https://インスタンスのドメイン/api/v1/statuses --header "Authorization: Bearer アクセストークン" |
いろいろなSDKが提供されているようですが、curlで行うのが一番楽そうです。とりあえずアクセストークンを取得できれば問題ないとおもうので、さくっと取得するならこの方法がおすすめです。
追記
PHPで定期トゥートするbotを作る方法をまとめましたのでこちらもあわせてご確認下さい。
1件のコメント