プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

SwiftのBox APIでサインインを行う。

この記事は2018年10月04日に投稿しました。

目次

  1. はじめに
  2. 前提
  3. サインイン処理
  4. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回はSwiftのBox APIでサインインを行う手順の紹介です。

目次へ

2. 前提

iOSアプリからBox APIにアクセスするため、Box iOS SDKライブラリを使用します。
以下の記事を参考に、Box APIを使用する準備をしておいてください。

paveway.hatenablog.com

目次へ

3. サインイン処理

以下がSwiftのBox APIでサインインを行う手順です。 この手順は、Box iOS SDKライブラリのドキュメントAuthenticationSingle User Modeを参考にしました。

  1. Boxのクライアントオブジェクトを取得します。 取得できない場合はサインインできないとしてfalseを返却します。
  2. サインイン済みかチェックします。
    ドキュメントに記載はないのですが、サインイン済みの場合、クライアントオブジェクトのuserプロパティが設定されるようです。
    そのためuserプロパティが設定されているかどうかチェックし、設定されている場合はサイン済みとしてtrueを返却します。
  3. クライアントオブジェクトのauthenticateメソッドを呼び出し、サインインを行います。
    実行するとBox側で用意されたサインイン画面が表示されます。
    有効なユーザ名とパスワードを入力し、サインインします。
    サインイン結果はクロージャで返却されます。
  4. エラーの場合はクロージャーの引数errorが設定されます。 またおそらくエラーの場合、クロージャーの引数userは設定されないと思われます(すみません未確認です)
    そのため引数userが設定されているかチェックしています。
  5. 引数errorが設定されず、引数userが設定されている場合、サインイン成功としてtrueを返却します。

実装例

import BOXContentSDK

/**
 Boxにサインインします。
 
 ― Returns: サインイン結果(true:サインイン成功、またはすでにサインイン済み / false:サインイン失敗)
 */
func boxSignIn() -> Bool {
    // 1. クライアントオブジェクトを取得します。
    guard let client = BOXContentClient.default() else {
        // クライアントオブジェクトが取得できない場合
        // 必要に応じてエラー処理してください。
        // サインインできなかったとしてfalseを返却します。
        reutrn false
    }
    
    // 2. サインイン済みかチェックします。
    if let _ = client.user {
        // サインイン済みの場合、処理を終了します。
        return true
    }
    
    // 3. Boxにサインインします。
    client.authenticate(completionBlock: { (user: BOXUser?, error: Error?) -> Void in
        // 5. エラーかチェックします。
        if let _ error {
            // エラーの場合
            // 必要に応じてエラー処理してください。
            // サインインできなかったとしてfalseを返却します。
            return
        }
        
        // 5. サインインできなかったかチェックします。
        guard let _ = user else {
            // ユーザオブジェクトが取得できない場合、サインインできなかったとします。
            // 必要に応じてエラー処理してください。
            return false
        }
        
        // 5. サインイン成功の場合の処理を記述してください。
        
        return true
    })
}

目次へ

4. おわりに

ドキュメントをみると、サインインにはシングルユーザモードマルチアカウントモードがあります。
PWEditorではシングルユーザモードに対応しています。

今のところPWEditorのユーザさんからマルチアカウントの要望はありません。
しかしいつかは他のクラウドストレージも含め、マルチアカウントに対応したいと思います。

今のシゴトに飽きちゃった...そんなあなたの見方です!【IT派遣テクノウェイブ】

目次へ