TwitterKitを使ってログインするときの注意点を2点
1. Twitterアカウントを登録しているかで挙動が変わる
TwitterKitを使ってTwitterログインするときに、TwitterのアカウントをiOSに設定しているかどうかで挙動が変わります。 (2017年1月時点)
iOSの設定でTwitterアカウントを登録している場合
iOSにTwitterアカウントを登録済の状態でTwitterログインをすると、許可のポップアップが最初に表示されます。
ここで許可すると、Twitterログインが成功します。(特に画面遷移が発生しない)
iOSの設定でTwitterアカウントを登録していない場合
SafariViewControllerが立ち上がり、Twitterログイン画面が表示されます。
といった風に遷移が変わってくるので、動作確認する場合は、2パターンは確認する必要があります。
動作確認時に発生した不具合
Twitterアカウントを登録していない場合はSafariViewControllerが立ち上がりますが、以下のようなエラーがコンソールに表示されてSafariViewControllerが立ち上がらないことがあります。
Desktop applications only support the oauth_callback value 'oob'
対応方法としては、 Twitter Application Management で、callback URLになにかしらURLを設定すると治ります。
2. Info.plistにconsumer keyとsecretが書かれる
Fabricを使ってTwitterKitを取り込むとInfo.plistにconsumer keyとconsumer secretが書かれます。
アプリ側で保持している以上どこに書いても問題はあるとは思うのですが、Info.plistに書くよりはコード上に書いたほうが幾分ましかなと思います。
コードでConsumerKeyを設定する
このようにFabric.with([Twitter.self])
より前にstartWithConsumerKeyを呼んでやらないとクラッシュします。
import TwitterKit func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { ... Twitter.sharedInstance().start(withConsumerKey: "xxx", consumerSecret: "yyy") Fabric.with([Twitter.self]) return true }