Twitter Kitで画像付き投稿をする
まえがき
最近までTwitter4jを使用して、画像付き投稿をしていたのですがTwitter Kitを使った方が認証がスムーズそうだし、純正だし今後のためにも乗り換えるかぁああということで乗り換えました!
乗り換えてみて、画像付きで投稿するまでのフローが少し面倒なのと、ネットの情報が古いものしか見当たらなかったので今回投稿してみました。
認証の流れは省いていますが、認証後でないと投稿はできませんのでお気をつけください。
投稿までの流れ
POST media/upload
まずこちらのAPIに画像のバイナリデータを送信し、media_id_stringの値を取得します。
ExampleResult
{
"media_id": 553639437322563584,
"media_id_string": "553639437322563584",
"size": 998865,
"image": {
"w": 2234,
"h": 1873,
"image_type": "image/jpeg"
}
}
POST statuses/update
そしてこちらのAPIに投稿文言と共に、先ほど取得したmedia_id_stringをPOSTすると画像付き投稿が可能になります!
実装
R.drawable.XXXXの画像をバイナリに変換して、Tweetするまでの流れです。
InputStream inputStream = getResources().openRawResource(R.drawable.XXXX);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bufRead;
while ((bufRead = inputStream.read(buffer)) != -1) {
bout.write(buffer, 0, bufRead);
}
byte[] binary =bout.toByteArray();
Observable.fromEmitter(emitter ->
TwitterCore.getInstance().getApiClient()
.getMediaService()
.upload(RequestBody.create(MediaType.parse("image/jpg"), binary), null, null)
.enqueue(new Callback<Media>() {
@Override
public void success(Result<Media> result) {
emitter.onNext(result.data.mediaIdString);
emitter.onCompleted();
}
@Override
public void failure(TwitterException exception) {
emitter.onError(exception);
}
}), Emitter.BackpressureMode.LATEST)
.flatMap(mediaIdString -> Observable.fromEmitter(emitter ->
TwitterCore.getInstance().getApiClient()
.getStatusesService()
.update(tweetContent.get(), null, false, null, null, null, false, null, (String) mediaIdString)
.enqueue(new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
emitter.onNext(true);
emitter.onCompleted();
}
@Override
public void failure(TwitterException exception) {
Timber.e(exception, "tweet upload %s", exception.getMessage());
emitter.onError(exception);
}
}), Emitter.BackpressureMode.LATEST))
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(isSuccess -> {
/*do something*/
},
throwable -> {
/*do something*/
});
雑ですみません、、以上です。
Author And Source
この問題について(Twitter Kitで画像付き投稿をする), 我々は、より多くの情報をここで見つけました https://qiita.com/u_nation/items/618e8b4353f02cff53ba著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .