Pragmatic ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

TwitterKitを使ってログインするときの注意点

TwitterKitを使ってログインするときの注意点を2点

1. Twitterアカウントを登録しているかで挙動が変わる

TwitterKitを使ってTwitterログインするときに、TwitterのアカウントをiOSに設定しているかどうかで挙動が変わります。 (2017年1月時点)

iOSの設定でTwitterアカウントを登録している場合

iOSTwitterアカウントを登録済の状態で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
    }