Flutter阿里云签名服务插件aliyun_sign的使用

Flutter 阿里云签名服务插件 aliyun_sign 的使用

快速通过 Query Map 获得多数阿里云 SDK 通用的签名。

使用方法

传入服务所需的 Access Key Secret 及所有参数,可选 GET 或 POST 方式。

// 获取签名
final String signature = AliyunSign.signFromQueries(
  accessKeySecret: 'my_access_key_secret',
  queries: <String, String>{
    'AccessKeyId': 'my_access_key_id',
    'Action': 'CreateToken',
    'Format': 'JSON',
    'RegionId': 'cn-shanghai',
    'SignatureMethod': 'HMAC-SHA1',
    'SignatureNonce': 'b924c8c3-6d03-4c5d-ad36-d984d3116788', // 通常使用 Uuid().v4
    'SignatureVersion': '1.0',
    'Timestamp': '2019-04-18T08:32:31Z', // 通常使用 DateTime.now().toUtc().toIso8601String()
    'Version': '2019-02-28',
  },
  method: 'POST', // 默认为 GET
);

完整示例 Demo

以下是一个完整的 Flutter 应用程序示例,展示如何使用 aliyun_sign 插件来生成阿里云签名。

步骤 1: 添加依赖

pubspec.yaml 文件中添加 aliyun_sign 依赖:

dependencies:
  flutter:
    sdk: flutter
  aliyun_sign: ^1.0.0 # 请根据实际情况选择正确的版本

步骤 2: 创建签名工具类

创建一个工具类用于生成阿里云签名。

import 'package:flutter/material.dart';
import 'package:aliyun_sign/aliyun_sign.dart';

class AliyunSignService {
  static Future<String> getSignature() async {
    final String signature = AliyunSign.signFromQueries(
      accessKeySecret: 'my_access_key_secret',
      queries: <String, String>{
        'AccessKeyId': 'my_access_key_id',
        'Action': 'CreateToken',
        'Format': 'JSON',
        'RegionId': 'cn-shanghai',
        'SignatureMethod': 'HMAC-SHA1',
        'SignatureNonce': 'b924c8c3-6d03-4c5d-ad36-d984d3116788', // 通常使用 Uuid().v4
        'SignatureVersion': '1.0',
        'Timestamp': '2019-04-18T08:32:31Z', // 通常使用 DateTime.now().toUtc().toIso8601String()
        'Version': '2019-02-28',
      },
      method: 'POST', // 默认为 GET
    );
    return signature;
  }
}

步骤 3: 在应用中调用签名生成方法

在 Flutter 应用程序中调用签名生成方法,并将签名添加到请求中。

import 'package:flutter/material.dart';
import 'aliyun_sign_service.dart'; // 导入上面创建的工具类

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('阿里云签名测试')),
        body: Center(child: SignatureButton()),
      ),
    );
  }
}

class SignatureButton extends StatefulWidget {
  [@override](/user/override)
  _SignatureButtonState createState() => _SignatureButtonState();
}

class _SignatureButtonState extends State<SignatureButton> {
  String _signature = '';

  Future<void> _generateSignature() async {
    setState(() {
      _signature = '';
    });
    final String signature = await AliyunSignService.getSignature();
    setState(() {
      _signature = signature;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        ElevatedButton(
          onPressed: _generateSignature,
          child: Text('生成签名'),
        ),
        SizedBox(height: 20),
        Text(_signature),
      ],
    );
  }
}

更多关于Flutter阿里云签名服务插件aliyun_sign的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter阿里云签名服务插件aliyun_sign的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


aliyun_sign 是一个用于在 Flutter 应用中生成阿里云签名服务的插件。通过这个插件,你可以方便地生成阿里云 API 请求所需的签名,以便与阿里云的各种服务进行交互。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 aliyun_sign 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  aliyun_sign: ^1.0.0  # 请根据实际情况选择最新版本

然后运行 flutter pub get 来安装插件。

使用插件

1. 导入插件

在你的 Dart 文件中导入 aliyun_sign 插件:

import 'package:aliyun_sign/aliyun_sign.dart';

2. 创建签名实例

你需要提供阿里云的 Access Key ID 和 Access Key Secret 来创建签名实例:

final signer = AliyunSigner(
  accessKeyId: 'your_access_key_id',
  accessKeySecret: 'your_access_key_secret',
);

3. 生成签名

你可以使用 signer 实例来生成签名。通常你需要提供以下参数:

  • method: HTTP 方法(如 ‘GET’、‘POST’ 等)
  • path: 请求路径
  • queryParameters: 查询参数
  • headers: 请求头
  • body: 请求体
final signature = signer.sign(
  method: 'GET',
  path: '/path/to/resource',
  queryParameters: {'param1': 'value1', 'param2': 'value2'},
  headers: {'header1': 'value1', 'header2': 'value2'},
  body: 'request_body',
);

print('Signature: $signature');

4. 使用签名

生成的签名通常需要添加到请求头中,以便阿里云服务验证请求的合法性。例如:

final headers = {
  'Authorization': 'ACS3-HMAC-SHA256 Credential=$signature',
  // 其他请求头
};

// 使用 headers 发送请求

示例代码

以下是一个完整的示例,展示了如何使用 aliyun_sign 插件生成签名并发送请求:

import 'package:aliyun_sign/aliyun_sign.dart';
import 'package:http/http.dart' as http;

void main() async {
  final signer = AliyunSigner(
    accessKeyId: 'your_access_key_id',
    accessKeySecret: 'your_access_key_secret',
  );

  final signature = signer.sign(
    method: 'GET',
    path: '/path/to/resource',
    queryParameters: {'param1': 'value1', 'param2': 'value2'},
    headers: {'header1': 'value1', 'header2': 'value2'},
    body: 'request_body',
  );

  final headers = {
    'Authorization': 'ACS3-HMAC-SHA256 Credential=$signature',
    // 其他请求头
  };

  final response = await http.get(
    Uri.parse('https://your-aliyun-service-endpoint/path/to/resource?param1=value1&param2=value2'),
    headers: headers,
  );

  print('Response status: ${response.statusCode}');
  print('Response body: ${response.body}');
}
回到顶部