【swift】DropBoxAPIを使用して一覧を取得

概要

DropBoxAPIを使用して、一覧を取得します。

開発環境

  1. Mac OS 13.2
  2. Xcode 14.0

認証画面を表示

  • DropBoxの認証画面を表示して認証します。
@IBAction private func moveSignIn(_ sender: Any) {
    // 認証されているかを判定します。
    guard DropboxClientsManager.authorizedClient != nil else {
        // 認証されていない場合、DropBoxの認証をします。
        signInDropbox()
        return
    }
}

private func signInDropbox() {
    let scopeRequest = ScopeRequest(scopeType: .user,
                                    // 表示する権限です。DropBoxDeveloperConsoleでチェックしたものを指定します。
                                    scopes: ["files.metadata.write",
                                             "files.content.write"],
                                    includeGrantedScopes: false)
    DropboxClientsManager.authorizeFromControllerV2(
        UIApplication.shared,
        controller: self,
        loadingStatusDelegate: nil,
        openURL: { (url: URL) -> Void in UIApplication.shared.open(url) },
        scopeRequest: scopeRequest
    )
}
  • 実行すると認証画面が表示されます。

  • 進めていくとDropBoxを使用するかどうかの画面が表示されます。
  • Allowを押下すると呼び出し画面へ戻ります。


一覧の取得

private func getList() {
    // 認証があるか確認してDropboxClientを取得します。
    guard let dropboxClient = DropboxClientsManager.authorizedClient else {
        return
    }
    // 指定したパスのファイル情報を取得します。
    // この場合は一番上を指定してます。
    let listFolders = dropboxClient.files.listFolder(path: "")
    listFolders.response { response, error in
        guard let result = response else {
            return
        }
        for entry in result.entries {
            // 格納されているFile情報が取れます。
            if let file = entry as? SwiftyDropbox.Files.FileMetadata {
                file.name // ファイル名
                file.size // ファイルサイズ
                file.pathDisplay // ファイルパス
                // その他ファイル情報が取れます。
            } else if let folder = entry as? SwiftyDropbox.Files.FolderMetadata {
                folder.name // フォルダ名
                folder.pathDisplay // フォルダパス
                // その他フォルダ情報が取れます。
            }
        }
    }
}