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
更多关于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¶m2=value2'),
headers: headers,
);
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
}