[Swift4] OauthでzaimAPIのアクセスキーを取得する

概要

Swift4と、OauthSwiftを用いて、iOSでZaimAPIを利用するためのアクションキーを取得する手順の備忘録。本記事ではzaimを例にしているが、基本的にはTwitter APIやGithub APIなんだでも同じ手順で出来る。

前提

OSX 10.126
iOS 11.2.6
xcode 9.2
swift 4.0.3
OAuthSwift 1.2.0
  • xcodeがインストールされている
  • zaimのアカウント登録済み

Zaimにアプリケーショを登録する

zaimログイン後、以下にアクセスしてアプリケーションの登録を行う。
https://dev.zaim.net/home/clients/add

  • 名称: アプリの名前とか入れる
  • サービス種類: iOSで利用するので「クライアントアプリ」を選択
  • 概要: 説明を書く
  • サービスのURL: 開発段階では何でも良い
  • アクセスレベル: どこまでできるか
  • アイコン画像: 無くても良い

登録するとコンシューマIDとコンシューマシークレットが手に入るので控えておく。

プロジェクトを作成

  • single page applicationで作成
  • 言語はswiftを選択

Project設定→inffo→URL Typesより、ディープリンクの設定を行う。

ディープリンクは、そのアプリがインストールされた端末のsafariで、特定のURLを開いた際にそのアプリを開くようにする設定。これを設定しておくことで、Zaimなどの各種OAuthサービスからコールバックでアクセスキーを受け取る際に、ブラウザから直接アプリを立ち上げることができる。

URL Schemesの部分に適当にプロジェクト名を入れたりする。これがディープリンク用のURLになるだけなので何でも良い。

OAuthSwiftのインストール

本記事では、OAuthによるアクセスキーの取得に、Swift用OAuthライブラリのOAuthSwiftを利用する。

OAuthSwiftのインストールにはCocoaPodsを用いる。CocoaPods自体のインストール方法と基本的な使い方については、iOSライブラリ管理ツール「CocoaPods」の使用方法 – Qiitaなどを参照。

Podfileを以下のようにして

platform :ios, '10.0'
use_frameworks!

target 'ProjectName' do
  pod 'OAuthSwift'
end

インストール

$ pod install

以下のようなPodfile.lockが生成されればOK

PODS:
  - OAuthSwift (1.2.0)

DEPENDENCIES:
  - OAuthSwift

SPEC CHECKSUMS:
  OAuthSwift: 7fd6855b8e4d58eb5a30d156ea9bed7a8aecd1ca

PODFILE CHECKSUM: 5eac377106539aabc31c87229422b0d43b9c0acb

COCOAPODS: 1.4.0

画面の作成

適当に画面を作る。ここは好きなように作ってよい。

とりあえず今回は右上の「同期」ボタンをタップすると、ViewControllerにタップイベントを走るようにした。

実装

AppDelegate.swift

以下のメソッドを追加する。Zaimからコールバックが飛んできた時にゴニョゴニョする部分。

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
  OAuthSwift.handle(url: url)
  return true
}

ViewController.swift

import UIKit
import OAuthSwift

class ViewController: UIViewController {

  var oauthswift: OAuthSwift? = nil
  
  @IBAction func onTappedSyncButton(_ sender: UIButton) {
    let oauthswift = OAuth1Swift(
      consumerKey:    "0f8hogehogehogehogehogehogec0b6",
      consumerSecret: "695fugafugafugfugafugafugaaf3f",
      requestTokenUrl: "https://api.zaim.net/v2/auth/request",
      authorizeUrl:    "https://auth.zaim.net/users/auth",
      accessTokenUrl:  "https://api.zaim.net/v2/auth/access"
    )
    
    self.oauthswift = oauthswift
    let _ = oauthswift.authorize(
      withCallbackURL: URL(string: "zaimanalyst://oauth-callback")!,
      success: { credential, response, parameters in
        print(credential.oauthToken)
        print(credential.oauthTokenSecret)
    },
      failure: { error in
        print(error.description)
    }
    )
  }
  
}

動作確認

アプリを立ち上げてボタンをタップすると、以下のような認証画面に移るので、許可する。

認証が完了して、コールバック経由でアクセスキーが取得できる。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です