Mastodonとは
オープンソースで出来てたTwitter風SNS。中身はなんとRailsとポスグレで動いてる。
サーバー構築さえすれば誰でもサービスを始めることができるのが特徴
投稿するには?
最終的に投稿(トッートっていうらしい)をAPI経由で行うには以下の手順を踏む必要がある。
用意するもの
OAuth2 クライアントを登録
まずはマストドン側にクライアントの登録を行う。 Twitterと違ってClient Nameは重複してもOKっぽい。
curl -X POST -sS https://HOST/api/v1/apps \ -F "client_name=CLIENT_NAME" \ -F "redirect_uris=urn:ietf:wg:oauth:2.0:oob" \ -F "scopes=read write follow"
- HOST : マストドン側のホスト名 mstdn.jpとかpawoo.netとか
- CLIENT_NAME : 好きなクライアント名 日本語もOKっぽい
- scopes クライアントに与える権限のこと
read write follow
の三種類があり、半角スペース区切りで記述する
正常に登録らせれると以下のようなJSONが返却される
{ "id": 4172, "redirect_uri": "urn:ietf:wg:oauth:2.0:oob", "client_id": "****************************************************", "client_secret": ""****************************************************"," }
client_idとclient_secretを使って次のAPIを叩くので控えておく
アクセストークンを取得
さっき登録したクライアントと投稿に使いたいアカウントの紐付けを行う
curl -X POST -sS https://HOST/oauth/token \ -d "scope=write read follow&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD"
- HOST : さっきと一緒
- CLIENT_ID : 最初のAPIで貰ったクライアントID
- CLIENT_SECRET : 最初のAPIで貰ったクライアントシークレット
- USERNAME : 投稿に使うアカウントのユーザー名 注意しなきゃいけないのは@hogeとかじゃなくログインに使うメールアドレス
- PASSWORD : パスワード
- scope : さっきと一緒
正常に叩ければ以下のように返却される
{ "access_token": "******************************", "token_type": "bearer", "scope": "write read follow", "created_at": 1492271386 }
今度はaccess_tokenを控えておく
アクセストークンを Authorization ヘッダに指定して投稿APIを実行
ようやく投稿APIが叩ける
curl -F "status=hello world" -sS https://pawoo.net/api/v1/statuses --header "Authorization: Bearer ACCESS_TOKEN"
疲れた、、