Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@daichi77

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

More than 1 year has passed since last update.

はじめに

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

今回やること

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

OAuth認証する。

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

画像を投稿する。

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倍じゃなくていいかもしれませんがいい感じの大きさにしてツイートしてあげてください。
注:画像が荒くなる可能性があります。

4
Help us understand the problem. What is going on with this article?
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
daichi77

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?