酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSでTwitterKitを使ってのログインで失敗する

久しぶりにTwitter APIを弄る機会がありました。

最近はTwitter APIを叩くといえばCoreTweet(C#)一択なのですが、今回はiPhoneアプリだったのでCoreTweetは使えず。公式のTwitterKitを使ってログインさせてみました。

TwitterKitを導入する

CocoaPodsを使ってTwitterKitをインストールすることができます。Podfileに

pod 'TwitterKit'

と書いてpod installでインストールします。最近はCocoaPodsが不調でインストールに失敗してしまうことがあります。

ログイン処理に失敗する

https://apps.twitter.com/」でアプリの登録をしてコンシューマーキーを取得します。

ログイン処理はこれだけでOKです。

func twitterLoginAction() {
    Twitter.sharedInstance().startWithConsumerKey("xxx", consumerSecret: "xxx")
        Twitter.sharedInstance().logInWithCompletion { (session, error) in
    }
}

ただ、上記のコードを実行するとクラッシュしてしまいました。クラッシュ時に以下のようにコンソールに表示されていました。

16-03-25 15:37:38.283 twitterclient[97521:2714879] [TwitterKit] did encounter error with message "Unable to authenticate using the system account.": Error Domain=TWTRLogInErrorDomain Code=2 "User allowed permission to system accounts but there were none set up." UserInfo={NSLocalizedDescription=User allowed permission to system accounts but there were none set up.}
 
2016-03-25 15:37:38.916 twitterclient[97521:2714879] [TwitterKit] did encounter error with message "Error obtaining user auth token.": Error Domain=TWTRLogInErrorDomain Code=-1 "<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>
" UserInfo={NSLocalizedDescription=<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>

開発者サイト側でコールバックのURLを設定していないのが原因でした。