パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v1.2.2

dropbox_client

Flutter用のDropboxクライアント。このライブラリはAndroidおよびiOSをサポートしています。認証はDropboxアプリまたは外部のウェブブラウザを通じて行われます。

AndroidiOS
30日間ダウンロード
487
いいね数
42
Pub ポイント
140

パッケージをインストール

flutter pub add dropbox_client

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Flutterパッケージで、AndroidおよびiOSアプリからDropboxのファイルやフォルダを管理できるようにするDropbox APIとのやり取りを可能にするクライアントを提供します。Dropboxアプリまたは外部のウェブブラウザを通じた認証をサポートしており、ユーザーアカウントへの安全なアクセスを保証します。クラウドストレージ機能を必要とするモバイルアプリへのシームレスな統合を目的として設計されています。アップロード、ダウンロード、ファイルの一覧表示などの一般的な操作を簡素化し、Dropbox接続を備えたクロスプラットフォームアプリを開発する開発者にとって最適です。

用途

  • ファイルのバックアップと同期
  • クラウド文書ストレージ
  • ユーザー ファイル管理
  • アプリデータの永続化
  • Dropboxワークフローとの統合

主な機能

  • Android および iOS をサポートしています
  • Dropbox アプリまたはブラウザによる認証
  • 簡単なファイルのアップロード/ダウンロード
  • クロスプラットフォーム互換性
  • セキュアな OAuth2 認可

適している対象

  • クラウドストレージを必要とするモバイルアプリ
  • ユーザーのファイルアクセスを必要とするアプリ
  • バックエンドとしてDropboxを使用する開発者
  • クラウド要件を備えたFlutterプロジェクト
  • Android および iOS の両方をターゲットにしたアプリ

注意事項

  • 認証には Dropbox アプリまたはブラウザが必要です
  • Dropboxエコシステムに限定
  • ネットワークの問題に対する適切なエラーハンドリングが必要です
  • 外部のDropbox APIの安定性に依存しています
  • ファイルアクセスにユーザーの同意が必要になる場合があります

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

dropbox client

pub package

A flutter plugin for accessing Dropbox.

Setup

Register a Dropbox API app from https://www.dropbox.com/developers . You need a Dropbox app key. Public clients using PKCE do not need an app secret, and must not embed one in the application.

For Android, add below in AndroidManifest.xml (replace DROPBOXKEY with your key)

    <activity
        android:name="com.dropbox.core.android.AuthActivity"
        android:configChanges="orientation|keyboard"
        android:launchMode="singleTask">
        <intent-filter>

            <!-- Change this to be db- followed by your app key -->
            <data android:scheme="db-DROPBOXKEY" />

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

If you need more help setting up Android, please read https://github.com/dropbox/dropbox-sdk-java#setup .

For iOS,

  1. add below in Info.plist

     <key>LSApplicationQueriesSchemes</key>
       <array>
           <string>dbapi-8-emm</string>
           <string>dbapi-2</string>
       </array>
    
  2. add below in Info.plist (replace DROPBOXKEY with your key)

     <key>CFBundleURLTypes</key>
       <array>
         <dict>
           <key>CFBundleURLSchemes</key>
           <array>
             <string>db-DROPBOXKEY</string>
           </array>
           <key>CFBundleURLName</key>
           <string></string>
         </dict>
       </array>
    

3.a) If you are using Swift, add below code to AppDelegate.swift

    import ObjectiveDropboxOfficial

    // should be inside AppDelegate class
    override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
      if let authResult = DBClientsManager.handleRedirectURL(url) {
          if authResult.isSuccess() {
              print("dropbox auth success")
          } else if (authResult.isCancel()) {
              print("dropbox auth cancel")
          } else if (authResult.isError()) {
              print("dropbox auth error \(authResult.errorDescription)")
          }
      }
      return true
    }

    // if your are linked with ObjectiveDropboxOfficial 6.x use below code instead

    override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
      DBClientsManager.handleRedirectURL(url, completion:{ (authResult) in
        if let authResult = authResult {
            if authResult.isSuccess() {
                print("dropbox auth success")
            } else if (authResult.isCancel()) {
                print("dropbox auth cancel")
            } else if (authResult.isError()) {
                print("dropbox auth error \(authResult.errorDescription)")
            }
        }
      });
      return true
    }

3.b) If you are using Objective C, add below code to AppDelegate.m

    #import <ObjectiveDropboxOfficial/ObjectiveDropboxOfficial.h>

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
        options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
      DBOAuthResult *authResult = [DBClientsManager handleRedirectURL:url];
      if (authResult != nil) {
        if ([authResult isSuccess]) {
          NSLog(@"Success! User is logged into Dropbox.");
        } else if ([authResult isCancel]) {
          NSLog(@"Authorization flow was manually canceled by user!");
        } else if ([authResult isError]) {
          NSLog(@"Error: %@", authResult);
        }
      }
      return NO;          
    }

    // if your are linked with ObjectiveDropboxOfficial 6.x use below code instead

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
        options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
      BOOL result = [DBClientsManager handleRedirectURL:url completion: ^(DBOAuthResult *authResult) {
        if (authResult != nil) {
          if ([authResult isSuccess]) {
            NSLog(@"Success! User is logged into Dropbox.");
          } else if ([authResult isCancel]) {
            NSLog(@"Authorization flow was manually canceled by user!");
          } else if ([authResult isError]) {
            NSLog(@"Error: %@", authResult);
          }
        }
      }];
      return NO;          
    }
  1. Update Deployment Target to iOS 9.0 or above from Xcode. (dropbox_client 0.7.0 and above)

  2. Add below permissions to your app from Dropbox App Console:

  • files.metadata.read
  • files.metadata.write
  • files.content.read
  • files.content.write

If you need more help setting up for iOS, please read https://github.com/dropbox/dropbox-sdk-obj-c#get-started .

Usage

import 'package:dropbox_client/dropbox_client.dart';

Future initDropbox() async {
    // Initialize a public client for PKCE. Call only once.
    await Dropbox.init(dropbox_clientId, dropbox_key);
}

The optional third argument is retained for legacy confidential-client flows:

await Dropbox.init(dropbox_clientId, dropbox_key, dropbox_secret);
// Legacy Authorization
String accessToken;

Future testLogin() async {
  // this will run Dropbox app if possible, if not it will run authorization using a web browser.
  await Dropbox.authorize();
}

Future getAccessToken() async {
  accessToken = await Dropbox.getAccessToken();
}

Future loginWithAccessToken() async {
  await Dropbox.authorizeWithAccessToken(accessToken);
}

Future testLogout() async {
  // unlink removes authorization
  await Dropbox.unlink();
}
// OAuth 2 code flow with PKCE that grants a short-lived token
String credentials;

Future testLogin() async {
  // this will run Dropbox app if possible, if not it will run authorization using a web browser.
  await Dropbox.authorizePKCE();
}

Future getCredentials() async {
  credentials = await Dropbox.getCredentials();
}

Future loginWithCredentials() async {
  await Dropbox.authorizeWithCredentials(credentials);
}

Future testLogout() async {
  // unlink removes authorization
  await Dropbox.unlink();
}
// List / Upload / Download

Future testListFolder() async {
  final result = await Dropbox.listFolder(''); // list root folder
  print(result);
  
  final url = await Dropbox.getTemporaryLink('/file.txt');
  print(url);
}

Future testUpload() async {
  final filepath = '/path/to/local/file.txt';
  final result = await Dropbox.upload(filepath, '/file.txt', (uploaded, total) {
    print('progress $uploaded / $total');
  });
}

Future testDownload() async {
  final filepath = '/path/to/local/file.txt';
  final result = await Dropbox.download('/dropbox_file.txt', filepath, (downloaded, total) {
    print('progress $downloaded / $total');
  });
}

Example can be found in example folder.

カテゴリー

依存関係

依存関係一覧 1 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。