概要
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) } ) } }
動作確認
アプリを立ち上げてボタンをタップすると、以下のような認証画面に移るので、許可する。
認証が完了して、コールバック経由でアクセスキーが取得できる。