Hatena::ブログ(Diary)

ねこら対策研究要塞日誌@はてな このページをアンテナに追加 RSSフィード Twitter

2017-04-17

[]JavaでMatodonのAPIアクセス(ライブラリ利用版) JavaでMatodonのAPIにアクセス(ライブラリ利用版)を含むブックマーク

昨日は、世界的ですもんね乗るしかないこのビッグウェーブに、と https://pawoo.net/@nekora2199 を素早く対応させるため、雑な方法をとったが、やっぱ https://github.com/zyuiop/mastodon-java を使った方が今後何かと便利だろう*1と思って調査。いずれ画像とか付けたいし、リプライで繋ぎたいしな。

http://qiita.com/yukimochi/items/f80a50a4486d0cb770dc の方法で既に、クライアント名、クライアントシークレット、アクセストークン、は予め得ている前提。

	private void exec(String[] args) {
		logger = initLogger();
		logger.info("start");
		String server_name = "ホスト名"; // pawoo.netとか
		String app_name = "自作アプリ名";
		String client_secret = "クライアントシークレット";
		String access_token = "アクセストークン";

		MastodonApp mstdn = new MastodonApp(server_name, app_name, client_secret);

		Credential credential = new Credential(BearerToken.authorizationHeaderAccessMethod());
		credential.setAccessToken(access_token);

		MastodonSession session = new MastodonSession(mstdn, credential);
		try {
			MastodonStatus stat = session.postStatus("日本語テスト from JavaAP ver.2 ");
			logger.info(stat.toPrettyString());
		} catch (IOException e) {
			logger.log(Level.WARNING, "ポスト失敗", e);
		}

		logger.info("end");
	}

コンパイル通す為に MastodonSession のコンストラクタはpublicに改造している。何となくもっと調べればちゃんとしたやり方…シークレットからトークン取得して…があるような気がするのでこれはこれで結構雑ではある。が、とにかくMastdonSessionさえ得てしまえば、他のメソッド処理を自作する必要が無く使い放題という塩梅だ。そもそもアクセストークンあればシークレット要らないだろ、という気もするが、まぁ合わせた方が良いだろう。内部で何か使っていないとも限らない。

ちなみにアクセストークンの期限だが、昨夜からずっと同じのを使いっぱなしだが未だに期限が来ていない。Twitterアクセストークントラブルが無ければ期限切れは無いので多分Pawooも期限は無いのだろう。

画像アップロードについてだが、小さい画像だと https://pawoo.net/@nekora2199/947533 こんな事になるので、大き目の画像の方が良いね。

*1:と言ってもこのライブラリもまだ作成途上だけど…。

トラックバック - http://d.hatena.ne.jp/nekora/20170417/p1