【iPhoneアプリ開発】現在でも利用可能なTwitterタイムライン取得手法(2019年12月最新)
Twitterタイムライン取得の手法は、色々な記事で紹介されています。
しかし、現在(2019/12)では利用できない手法の記事が多く、先人のコードを真似して書いてみてもプログラムが動かない、ということが数多くありました。
今回、どの情報がすでに利用できなくなっていて、どの情報が今でも利用できるのか、整理のためにまとめてみました。
【現在でも利用可能】Firebaseを利用してAPI認証→タイムライン取得
いろいろ試したのですが、結論から言うとこちらの手法にて認証通す→タイムラインの取得まですることができました。
Firebaseは、Googleが提供する「モバイルおよびWebアプリケーション開発プラットフォーム」とのことで、アプリ用のアナリティクスなどいろんな機能が詰まったプラットフォーム。その機能の1つに、TwitterやFacebookなどの認証、ログイン管理が備わっています。
Firebaseを利用したタイムライン取得の流れは下記です。
1.TwitterAPI認証を通す
2.Twitterにログインする
3.ログインしたユーザのタイムラインをAPIから取得する
そのうち、上記の記事を参考にすると、2までは実現が可能です。プログラムを組んだ上で、下記のログインボタンを押してログインすると、Firebase側でログインユーザの情報が表示されます。
上記表の3については、私は以下の記事内の「タイムラインを取得する」を参考にさせてもらいました。併せてご確認ください。
【現在では利用不可な手法1】認証なしでAPIからTwitterタイムラインを取得
ここからは、「Twitterタイムラインの取得」について、現在は利用できない手法の紹介です。
こちらは、APIキーを使った認証なしでAPIからTwitterタイムラインを取得するやり方です。
この手法は検索上位にいくつも記事が掲載されているのに加え、簡単そうで試してみたくなりますが、現在では利用不可なのでご注意ください!
iOS 10までのiPhoneは、デフォルトでTwitterやFacebookのアカウントを連携させることができました。この仕様があった当時は、タイムラインの表示やツイートをするためにAPI認証を通す必要はなかったとのこと。ですが、この仕様がiOS 11から廃止、利用不可となっています。
【現在では利用不可な手法2】Fabricを利用してAPI認証→タイムライン取得
https://wandering-engineer.tech/2019/07/01/swift4-twitter-client-sample/
Firebaseの前に試そうとしたのが、こちらの手法でした。「Fabric」というプラットフォームを利用するやり方です。
上記の記事が特にわかりやすく、とても丁寧にまとめられていたのですが……残念ながらこの手法も使えなくなっていました。
というのも、FabricはFirebase(上記、Google配下のアプリ用プラットフォーム)のサービスの一部に組み込まれてしまったとのこと。
【参考】端末側でのログイン状況確認
Firebaseを利用すれば、API認証通す→タイムラインを取得することが可能です。しかし、これだけだとでは端末側から認証状況がぱっとわかりません。認証が通ってるかどうかを確認するコードも付けてみました。
「認証状況確認」ボタンを押すと、認証してない状態では「未認証」、認証後は「認証済」とテキストが切り替わります。
func hasAlreadyTwitterAuth() -> Bool {
if TWTRTwitter.sharedInstance().sessionStore.hasLoggedInUsers() {
return true
}
return false
}
@IBOutlet weak var testLabel: UILabel!
@IBAction func changeLabel(_ sender: Any) {
if(hasAlreadyTwitterAuth()){
testLabel.text = "認証済"
}else{
testLabel.text = "未認証"
}
}
【参考】APIキーを取得
なお、今回説明したAPIキーは、Twitter側に申請して受け取る必要があります。
この工程はアプリ開発以外も共通なので、参考リンクが多いです。下記の記事は特にわかりやすかったですので、困ったら参考にしてください。
まとめと現状残る問題点
いかがだったでしょうか。なるべく回り道せず、動くコードを組むための参考になれば、と思います。
なお、現在の問題点として、ブラウザ経由だと認証が通るものの、Twitterアプリ経由だとなぜか通らない、という症状が起きています……これがなぜかは別途時間を設けて検証していきます。
ちなみに私は現在ウェブエンジニア・ディレクターとして働いていますが、アプリのプログラミングは勉強中の状態です。上記の内容も、あくまで初学者の方向けの内容として、参考にしていただければ幸いです。
読んでいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?