トゥートしてみよーってことで。
手順
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の説明みりゃわかると思う。
コメント