トゥートしてみよーってことで。

手順

  1. アプリケーションを登録する。APIはこれ
  2. OAuthでアクセストークンを取得
  3. トゥート。APIはこれ

Javaでjerseyをつかったコードをあげるが、アクセストークンがあればトゥートできるので2までは、curlなんかを使ってアクセストークンを取ってくるのでもいい。あと、friends.nicoインスタンスを使用する。

1.アプリケーションを登録する。

        final String MASTODON_HOST = "https://friends.nico/";
        
        // アプリケーションの登録
        Client client;
        client = ClientBuilder.newClient();
        
        Form form = new Form()
                .param("client_name", CLIENT_NAME)
                .param("redirect_uris", "urn:ietf:wg:oauth:2.0:oob")
                .param("scopes", "read write follow");
        Entity<Form> entity = Entity.form(form);
        
        WebTarget target = client.target(MASTODON_HOST);
        String res = target.path("/api/v1/apps")
                .request()
                .post(entity, String.class);
        
        System.out.println(res);

JSON形式でclient_id、client_secretが返ってくるので覚えておく。
CLIENT_NAMEはアプリ名を指定する。

2.OAuthでアクセストークンを取得

        final String MASTODON_HOST = "https://friends.nico/";
        
        Client client;
        client = ClientBuilder.newClient();

        Form form = new Form()
                .param("client_id", CLIENT_ID)
                .param("client_secret", CLIENT_SECRET)
                .param("grant_type", "password")
                .param("username", EMAILADDR)
                .param("password", PASSWORD)
                .param("scope", "read write follow");
        Entity<Form> entity = Entity.form(form);
        WebTarget webtarget = client.target(MASTODON_HOST);
        String res = webtarget.path("/oauth/token")
                .request()
                .post(entity, String.class);
        System.out.println(res);

JSON形式でaccess_tokenが返ってくるので覚えておく。
CLIENT_ID、CLIENT_SECRETは1.で取得したものを指定し、EMAILADDR、PASSWORDはアカウントを作ったときのe-mailとパスワードを指定する。

3.トゥート

        final String MASTODON_HOST = "https://friends.nico/";
        
        Client client;
        client = ClientBuilder.newClient();

        // トゥート!
        MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
        headers.putSingle("Authorization", "Bearer " + ACCESS_TOKEN);
        WebTarget webtarget = client.target(MASTODON_HOST);
        Form form = new Form()
                .param("status", "テスト");
        Entity<Form> entity = Entity.form(form);
        String res = webtarget.path("/api/v1/statuses")
                .request()
                .headers(headers)
                .post(entity, String.class);
        System.out.println(res);

JSON形式で新しいStatusが返ってくるわけね。
公開範囲やNSFWの指定やらは、APIの説明みりゃわかると思う。