Aus öffentlichen Paketdaten erstellte Orientierung.
Ein Flutter-Paket, das einen Client für die Interaktion mit der Dropbox-API bereitstellt und es ermöglicht, Dateien und Ordner in Dropbox von Android- und iOS-Apps aus zu verwalten. Es unterstützt die Authentifizierung über die Dropbox-App oder einen externen Webbrowser und gewährleistet sicheren Zugriff auf Benutzerkonten. Die Bibliothek ist für eine nahtlose Integration in mobile Anwendungen mit Cloud-Speicherfunktionen konzipiert. Sie vereinfacht alltägliche Aufgaben wie Hochladen, Herunterladen und Auflisten von Dateien und ist daher ideal für Entwickler, die plattformübergreifende Apps mit Dropbox-Verbindung erstellen.
Anwendungsfälle
Dateisicherung und Synchronisierung
Cloud-Dokumentenspeicherung
Benutzerdateiverwaltung
App-Datenpersistenz
Integration mit Dropbox-Arbeitsabläufen
Hauptmerkmale
Unterstützt Android und iOS
Authentifizierung über die Dropbox-App oder den Browser
Einfacher Datei-Upload/Download
Plattformübergreifende Kompatibilität
Sichere OAuth2-Berechtigung
Geeignet für
Mobile Apps, die Cloud-Speicher benötigen
Apps, die den Benutzerdateizugriff erfordern
Entwickler, die Dropbox als Backend verwenden
Flutter-Projekte mit Cloud-Anforderungen
Apps, die sowohl für Android als auch für iOS entwickelt wurden
Hinweise
Benötigt Dropbox-App oder Browser für die Authentifizierung
Beschränkt auf das Dropbox-Ökosystem
Erforderliche ordnungsgemäße Fehlerbehandlung für Netzwerkprobleme
Abhängig von der Stabilität der externen Dropbox-API
Kann Benutzerzustimmung für den Dateizugriff erfordern
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
dropbox client
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 .
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;
}
Update Deployment Target to iOS 9.0 or above from Xcode. (dropbox_client 0.7.0 and above)
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';
FutureinitDropbox() async {
// Initialize a public client for PKCE. Call only once.awaitDropbox.init(dropbox_clientId, dropbox_key);
}
The optional third argument is retained for legacy confidential-client flows:
// Legacy AuthorizationString accessToken;
FuturetestLogin() async {
// this will run Dropbox app if possible, if not it will run authorization using a web browser.awaitDropbox.authorize();
}
FuturegetAccessToken() async {
accessToken = awaitDropbox.getAccessToken();
}
FutureloginWithAccessToken() async {
awaitDropbox.authorizeWithAccessToken(accessToken);
}
FuturetestLogout() async {
// unlink removes authorizationawaitDropbox.unlink();
}
// OAuth 2 code flow with PKCE that grants a short-lived tokenString credentials;
FuturetestLogin() async {
// this will run Dropbox app if possible, if not it will run authorization using a web browser.awaitDropbox.authorizePKCE();
}
FuturegetCredentials() async {
credentials = awaitDropbox.getCredentials();
}
FutureloginWithCredentials() async {
awaitDropbox.authorizeWithCredentials(credentials);
}
FuturetestLogout() async {
// unlink removes authorizationawaitDropbox.unlink();
}
// List / Upload / DownloadFuturetestListFolder() async {
final result = awaitDropbox.listFolder(''); // list root folderprint(result);
final url = awaitDropbox.getTemporaryLink('/file.txt');
print(url);
}
FuturetestUpload() async {
final filepath = '/path/to/local/file.txt';
final result = awaitDropbox.upload(filepath, '/file.txt', (uploaded, total) {
print('progress $uploaded / $total');
});
}
FuturetestDownload() async {
final filepath = '/path/to/local/file.txt';
final result = awaitDropbox.download('/dropbox_file.txt', filepath, (downloaded, total) {
print('progress $downloaded / $total');
});
}