久しぶりに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を設定していないのが原因でした。