Help us understand the problem. What is going on with this article?

Swifterを使って画像を投稿する

はじめに

SwiftでTwitterAPIを使って画像を投稿したかったのですがあまり記事がなかったので投稿します。
Swifterというライブラリを使っています。ドキュメントには画像を投稿することについては書いていなかったのですがコード読んでたらそれらしきものがあったのでそれを使いました。
https://github.com/mattdonnelly/Swifter

今回やること

  1. SwifterでaAuth認証する。
  2. 画像をツイッターに投稿する。

OAuth認証する。

これに関しては記事を別に書いているのでそちらを見てください。

https://qiita.com/daichi77/items/88fcffaf11585033fdd4

画像を投稿する。

let image = UIImage(hogehoge)//投稿する画像を入れる。
let data = image.pngData()//data型に変換
//aouth認証で入手したやつを入れる。
let swifter = Swifter(consumerKey: 取得したkey,
                      consumerSecret: 取得したkey,
                      oauthToken: 取得したkey,
                      oauthTokenSecret: 取得したkey)
//ツイート。statusには文をmediaには画像をdata型に変換したものを入れる
swifter.postTweet(status: "test", media: data!,success: { json in
  print(json)//成功時
}, failure: {error in
  print(error)//失敗時
})

こんな感じでツイートできました。
文章のみ投稿するpostTweetはドキュメントに載っていましたが画像投稿も同じ感じでツイートできました。
スクリーンショット 2020-02-11 11.36.34.png

補足(413 payload too large errorが帰ってくる場合 )

自分の場合iPhoneのフォルダーから画像を読み取ってそれをアプリに保存した後に
再度アプリから保存した画像を読み取りツイッターに投稿という手順だったのでこの手順のどこかで画像が大きくなってしまったのかもしれません。
もしかしたら同じエラーが帰ってくる人がいるかもしれないので解決方法を載せておきます。

let image = UIImage(hogehoge)//投稿する画像
//大きさをresizeする
let width = image.size.width * 0.1
let height = image.size.height * 0.1
UIGraphicsBeginImageContextWithOptions(CGSize(width: width, height: height), false, 1.0)
image.draw(in: CGRect(x: 0, y: 0, width: width, height: height))
let resizeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//大きさをresizeした後にdata型に変換
image.pngData()

こんな感じで画像の大きさをresizeしてあげるとうまくtweetできました。0.1倍じゃなくていいかもしれませんがいい感じの大きさにしてツイートしてあげてください。
注:画像が荒くなる可能性があります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした