sososdk / aliyunpan-flutter-sdk

阿里云盘开放平台 Flutter(dart) SDK
4 stars 1 forks source link
aliyundrive

[非官方] 阿里云盘开放平台 SDK

pub

准备工作

👉 如何注册三方开发者

快速开始

添加依赖:

dependencies:
  aliyunpan_sdk: ^1.0.12
  # 使用阿里云盘客户端登录时, 需要添加此依赖
  aliyunpan_flutter_sdk_auth: ^1.0.6

配置:

如果不使用阿里云盘客户端登录, 请跳过配置步骤.

pubspec.yamlaliyunpan进行一些配置. 具体可以参考pubspec.yaml.

使用

认证

import 'package:aliyunpan_flutter_sdk_auth/aliyunpan_flutter_sdk_auth.dart';
import 'package:aliyunpan_sdk/aliyunpan_sdk.dart';

/// 创建阿里云盘客户端
final client = AliyunpanClient(
  appId,
  refreshTokenFunction: refreshToken,
  debug: true,
  onTokenChange: (token) => SharedPreferences.getInstance().then((e) {
    if (token == null) {
      e.remove('key_token');
    } else {
      e.setString('key_token', jsonEncode(token));
    }
  }),
);

/// 读取本地存储的token
SharedPreferences.getInstance().then((e) {
  final object = e.getString('key_token');
  if (object != null) {
    client.token = Token.fromJson(jsonDecode(object));
  }
});

/// 认证
final credentials = FlutterCredentials.pkce(...);
await client.authorize(credentials);

支持多种认证方式:

Flutter Credentials 使用阿里云盘客户端或者WebView获取授权码, 然后获取 token.

Qrcode Credentials 获取授权二维码, 通过阿里云盘客户端扫二维码获取授权码, 然后获取 token.

Web Credentials 使用WebView获取授权码, 然后获取 token.

  • pkce(无后端服务授权模式) 不需要 app_secret服务端, 但是不会返回refresh_token
  • server 模式需要服务端, 可以获取到refresh_token
  • secret 模式需要app_secret, 有暴露app_secret的风险, 可以获取到refresh_token

发送命令

使用 SDK,你可以轻松使用所有已提供的 OpenAPI 和它们的请求体、返回体模型

await client.send(...);

上传

await client.uploader.enqueue(UploadTask);

监听上传状态

client.uploader.updates.listen((event) {});

下载

await client.downloader.enqueue(DownloadTask);

监听下载状态

client.downloader.updates.listen((event) {});

谁在使用