Box iOS SDKをインストールして、API呼び出しの実行。jpgファイルのダウンロード

box-ios-sdkをインストール

$ brew install carthage

$ vi Cartfile

git "https://github.com/box/box-ios-sdk.git" ~> 3.0

$ carthage update --platform iOS

https://ja.developer.box.com/guides/mobile/ios/quick-start/install-ios-sdk/

 

RxSwiftとRxCocoaインストール

https://qiita.com/Soccerboy_Hamada/items/037f80c95acc9ae9949e

 

2022/2/11確認

SimulatorでSign inボタンを押した時に、確認メッセージが表示され、続けるを押すと、メールアドレスとパスワードを入力するログイン画面が表示できた。

gmailのメールアドレスでログインすると、Sorry , we couldn't find that pageのページが表示されるが、Box.comのリンクをクリックした後、Grant access to Boxボタンをクリックするとアプリに戻り、Downloadボタンで画像をダウンロードして表示できた(ログイン済み状態)

iPhone XsではSign inボタンを押しても確認メッセージもログイン画面も表示されない。画像も表示できない。

 

2021/04/04確認

f:id:fedora9:20201025223245p:plain

f:id:fedora9:20201025223438p:plain

f:id:fedora9:20201025223524p:plain

f:id:fedora9:20201025223947p:plain

 

 

Info.plistにBoxのClient IDをセットする

URL types

  Item 0

    URL Schemes

      Item 0 に、boxsdk-YOUR_BOX_CLIENT_ID

BoxのClient IDは、Box Developers  を開き確認

 

Downloadをクリックして、ログイン画面が表示され、ログインする。

再度Downloadをクリックすると画像が表示される。

 

MyAppにHelloWorldSwiftを作成

SwiftでBox APIを使用する準備を行う。 - プログラムを書こう!

 

Podfileに

pod 'BoxSDK', '~> 4.0'

を追加して、$ pod install

でインストール。

Xcodeを終了して、.xcworkspaceを開く。

 

API呼び出しの実行 - Box開発者向けドキュメントポータル

API呼び出しの実行

Box Developers  を開き、HelloWorldSwiftを開き、Developer Tokenをコピー

Developer Tokenの有効期限は60分なので、切れたらDeveloper Tokenを再度作成する。

 

import BoxSDK

を追加して

override func viewDidLoad() {

の下に

    let client = BoxSDK.getClient(token: "YOUR_DEVELOPER_TOKEN")

    client.users.getCurrent(fields:["name", "login"]) { (result: Result<User,

      BoxSDKError>) in

      guard case let .success(user) = result else {

          print("Error getting user information")

          return

      }

      print("Authenticated as \(user.name)")

    }

 

    sleep(5)

を追加して、実行すると表示される

 

フォルダ内の項目のリストを取得 - APIリファレンス - Box開発者向けドキュメントポータル

フォルダのファイル一覧を取得

 

override func viewDidLoad() {

の下に追加する

    let client = BoxSDK.getClient(token: "YOUR_DEVELOPER_TOKEN")

    let folderItems = client.folders.listItems(folderId: "0", sort: .name, direction: .ascending) { results in

      switch results {

      case let .success(iterator):

        for i in 1 ... 10 {

          iterator.next { result in

            switch result {

            case let .success(item):

              switch item {

              case let .file(file):

                print("File \(file.name) (ID: \(file.id)) is in the folder")

              case let .folder(folder):

                print("Subfolder \(folder.name) (ID: \(folder.id)) is in the folder")

              case let .webLink(webLink):

                print("Web link \(webLink.name) (ID: \(webLink.id)) is in the folder")

              }

            case let .failure(error):

              print(error)

            }

          }

        }

      case let .failure(error):

        print(error)

      }

    }

    

    sleep(5)

folderIdを確認するには、ブラウザでフォルダを開いて、URLからIDをコピーします

folderIdはフォルダを表す一意の識別子

ルートフォルダは0

 

ファイルをダウンロード - APIリファレンス - Box開発者向けドキュメントポータル

jpgファイルをダウンロード

Info.plistにBoxのClient IDをセットする

URL types

  Item 0

    URL Schemes

      Item 0 に、boxsdk-YOUR_BOX_CLIENT_ID

BoxのClient IDは、Box Developers  を開き確認

 

override func viewDidLoad() {

の下に追加する

    let client = BoxSDK.getClient(token: "BOX_DEVELOPER_TOKEN"

    //ダウンロード先URLを設定

    let directoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

    let pathComponent = "123456789012"  // 任意のdownload先ファイル名

    let url:URL = directoryURL.appendingPathComponent(pathComponent)

    

    client.files.download(fileId: "123456789012", destinationURL: url) { (result: Result<Void, BoxSDKError>) in

      guard case .success = result else {

        print("Error downloading file")

        return

      }

      print("File downloaded successfully")

    }

    

    sleep(5)

実行すると、jpgファイルがダウンロードされます。

FinderでiPhoneを開き、Files-HelloWorldSwiftを開くとファイル名を確認できる

sleep(5)が無いとダウンロードされない、Active Consoleにも表示されない。

fileIdを確認するには、ブラウザでフォルダを開いて、URLからIDをコピーします

 

OAuth 2.0を使用した設定 - Box開発者向けドキュメントポータル

GitHub - box/box-ios-sdk: iOS SDK for the Box Content API

box-ios-sdk/ViewController.swift at master · box/box-ios-sdk · GitHub

Sing inボタンを押して、Emailとパスワードを入力して、Codeを入力した後に遷移するページでSorry, we couldn't find that pageと表示されるが、Box.comのリンクをクリックした後、Grant access to Boxボタンをクリックするとアプリに戻り、画像がダウンロードできる(ログイン済み状態)

Box DeveloperのOAuth 2.0 Redirect URIは、

boxsdk-BOX_CLINET_ID://boxsdkoauth2redirect

Info.plistのItem 0は、

boxsdk-BOX_CLINET_ID

 

Single User Mode authenticaion always present an error: redirect_url_mismatch. · Issue #583 · box/box-ios-sdk · GitHub