概要
Swifter は iOS アプリ用の Twitter ライブラリで Twitter API を使ってツイートの取得やつぶやきを行うことができます
公式の Fabric を使う方法もありますが、カジュアルに使いたかったので Swifter を試してみました
環境
- Mac OS X 10.11.6
- Xcode 7.3.1 (Swift 2.1)
- Swifter 1.7
ライブラリのインストール
あらかじめ適当なサンプルプロジェクト (今回は swifter-test )を作成しておいてください
Swifter は残念ながら CocoaPods が使えません
対応してほしいという要望は Issue でいろいろと上がって入るのですが、本記事執筆時の段階 (2016/09/13) ではまだ対応されておりません
なので、ソースをダウンロードして手動で framework をプロジェクトに紐付ける必要があります
まずソースをダウンロードします
https://github.com/mattdonnelly/Swifter/archive/1.7.zip
今回 1.7 というバージョンを使います
最新版に 2.0 というバージョンがあるのですが、Swift 3.0 対応版になっており、Swift 3.0 が使える環境でないとエラーとなるため使えません
ダウンロードしたら解凍しましょう
Swifter-1.7 というフォルダの中に Swifter.xcodeproj があれば OK です
そしたらそのファイルを Xcode にドラッグアンドドロップしてください
以下のような感じになれば OK です
次に swifter-test を選択します
General -> Embedded Binaries
で「+」ボタンを押しダイアログから SwifteriOS.framework を探し追加してください
以下のようになれば OK です
同時に Linked Frameworks and Libraries にも framework ファイルが追加されると思います
これでライブラリのインストールは OK です
Twitter アプリの作成
https://apps.twitter.com/
にアクセスしアプリを作成します
アプリを作成するユーザでログインしておいてください
ログインできたらアプリを作成するのですが、どうやら Twitter アカウントに電話番号の登録が完了している状態でないとアプリの新規作成はできないようです
なので、素直に Twitter アカウントに電話番号を設定してください
アプリが作成できたら「Keys And Access Tokens」から
- Consumer Key (API Key)
- Consumer Secret (API Secret)
を取得しましょう
また、その下に「Your Access Token」があるので新規でアクセストークンとシークレットアクセストークンも作成しておいてください
- Access Token
- Access Token Secret
取得したトークンは Access Level が「Read and write」になっていることも確認してください
サンプルコード
swifter-test プロジェクトにある ViewController.swift を開き viewDidLoad メソッドに以下のコードを記載してください
今回は特に UI 側は作らないのでプロジェクトを実行するだけでつぶやく感じにしたいと思います
override func viewDidLoad() {
super.viewDidLoad()
print("start")
let TWITTER_CONSUMER_KEY = ""
let TWITTER_CONSUMER_SECRET = ""
let TWITTER_ACCESS_TOKEN = ""
let TWITTER_ACCESS_TOKEN_SECRET = ""
let accessToken = SwifterCredential.OAuthAccessToken(key: TWITTER_ACCESS_TOKEN, secret: TWITTER_ACCESS_TOKEN_SECRET)
let credential = SwifterCredential(accessToken: accessToken)
let swifter = Swifter(consumerKey: TWITTER_CONSUMER_KEY, consumerSecret: TWITTER_CONSUMER_SECRET)
swifter.client.credential = credential
swifter.postStatusUpdate("swifter-test", inReplyToStatusID: nil, lat: nil, long: nil, placeID: nil, displayCoordinates: nil, trimUser: nil, success: {
(status) in
print(status)
}) {
(error) in
print(error)
}
}
TWITTER_CONSUMER_KEY から TWITTER_ACCESS_TOKEN_SECRET までの定数は Twitter アプリ作成時に取得したトークン情報をそのままコピペしてください
基本的にはつぶやくための認証 (OAuthAccessToken) を実行して、その認証実行を使ってつぶやく (postStatusUpdate) だけです
動作確認
では実行してみましょう
Xcode で Run すれば OK です
成功するとコンソールログにレスポンス情報がだらーっと表示されると思います
また、Twitter 側にもアプリを保持しているアカウントでつぶやきが行われていると思います
UI 側は特に作成していないので、真っ白な画面が表示されるだけだと思います
Tips
認証回りについて
Twitter には様々な認証方式があります
今回は OAuth 認証を使ったのですが、他にも Application-only authentication という認証方式があります
App-only Auth はいわゆる簡易認証みたいなやつで認証に必要な情報あ「Consumer Key」と「Consumer Secret」だけになります
簡単だったらこっちを使えばいいじゃんという話になるのですが、実は App-only Auth を使うとつぶやきをするための権限がもらえません
基本は GET 系の処理だけできます
なので、今回は OAuth 認証を使いました
Swifter の公式サイトの Getting Started が App-only Auth を使った認証になっており、初めそれを使っていたのですがツイートしようとすると Twitter から「credentials do not allow access to this resource.」と怒られ全然ツイートできませんでした
もしかするとこの辺りの権限や認証方法回りは Twitter API のはまりポイントかもしれません
最後に
これで Swifter を使って iOS アプリからつぶやきができるようになりました
ライブラリの追加が少し面倒なだけで、そこを我慢すれば Fabric よりかは簡単に使えるかなと思いました
ただ、CocoaPods 対応していないのでライブラリのソースコード一式をどこかで管理しないとしけないのがちょっとつらい点ではあります
あとは git submodule を使うとかでしょうか
0 件のコメント:
コメントを投稿