4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

KIT DeveloperAdvent Calendar 2019

Day 21

Swifterでaouth認証してaccesstoken取得するまで

Last updated at Posted at 2019-12-24

初めに

今回はSwiftでtwitterapi叩こうと思います。
TwitterKitというのが主流だったらしいのですがサポート終了したということでSwifter使っていきます。

流れ

  • cocoapodsでswifter入れる
  • oauth認証のためのメソッドを呼ぶ
  • safariで認証後アプリに戻ってくる。

やってみる

まずpodfileに以下を書き込んでpod installしっます

pod 'Swifter', :git => 'https://github.com/mattdonnelly/Swifter.git'

次にviewControllerに以下を書きます。
buttonを押した時でもViewdidloadの時でもお好きなタイミングで呼び出してください。
SFSafariViewControllerDelegateを準拠させておくとアプリ内でsafariを開けます。

ViewController
//twitterdeveloperで取得したapikeyとapisecretkeyを入れます。
let swifter = Swifter(consumerKey: "APIkey", consumerSecret: "ApiSecretKey")
//safariを開く。callbackURLがTwitterDeveloperのcallBackURLと違っていたりkeyが間違えたりしてるとerrorに飛ぶ。
swifter.authorize(withCallback: URL(string: "各々設定したcallbackURL")!, presentingFrom: self, success: {accessToken, response in
     print(accessToken.key)
},failure: { error in
     print(error)
})

Custom URL Scheme

次にCustomURLSchemeを設定します。
こいつを設定してあげるとそのリンクを開いたときにアプリに戻るかどうかというポップアップが出るようになります。
つまり

  1. safariを開く
  2. ユーザーがパスワードなどを使ってaouth認証する。
  3. 設定したcallBacURLに飛ぶ
  4. callBackURLをCustomURLSchemeに設定してあるのでアプリに戻ってくることができる。
    という流れができます。
    ということで、TARGETS->自分のアプリ->info->URLTypes->URLSchemesに設定したsampleと指定してあげましょう。
    例えばcallBackURLをsample://と設定しているのなら、sampleの部分だけ書いてあげます。
    これでcallBackURL://と叩かれたときにアプリに戻ってこれます。
    info.plistのURLSchemesに設定してあげてもいいです。
    最後にappdelegateに戻ってきた時の処理を書きます。

AppDelegate.swift

AppDelegate
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        return Swifter.handleOpenURL(url, callbackURL: URL(string: "設定したcallBackURL")!)
}

これで一通り実装は終わりです。

躓きポイント

  • AppDeveloper側でcallBackURLを設定しているかどうか。
  • callbackURLがsample://だとしたらURLschemeはsampleだけになっているか
  • apikeyが間違っていないか
    以上です。

参考にしたサイト

https://qiita.com/noby111/items/532f3d806b19ab46433a
https://github.com/mattdonnelly/Swifter
https://qiita.com/k-boy/items/c83a0505d12cc8e7d4b9

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?