如何使用Flutter调用WooCommerce API?
如何用Flutter正确调用带OAuth1认证的WooCommerce API
你之前调用WordPress的公开REST API没问题,但WooCommerce的API是需要OAuth1认证的,直接访问肯定会返回空响应或者权限错误——这就是问题所在!
下面给你两种可行的解决方案,从省心到灵活任你选:
方案一:用专门的WooCommerce Flutter包(最省心)
直接用社区维护的woocommerce包,它已经帮你封装好了所有OAuth1认证逻辑,不用自己写签名。
步骤1:添加依赖
在pubspec.yaml里加入:
dependencies: flutter: sdk: flutter woocommerce: ^0.3.0 # 建议使用最新版本
步骤2:修改你的代码
import 'package:woocommerce/woocommerce.dart'; import 'dart:convert'; // 替换成你自己的Consumer Key和Secret final WooCommerce wooCommerce = WooCommerce( url: 'http://jalania.com', consumerKey: 'YOUR_CONSUMER_KEY', consumerSecret: 'YOUR_CONSUMER_SECRET', ); Future<void> fetchProducts() async { try { // 直接调用封装好的方法获取产品列表 List<WooProduct> products = await wooCommerce.getProducts(); setState(() { // 把WooProduct对象转成JSON格式,适配你之前的data变量处理逻辑 data = products.map((product) => product.toJson()).toList(); }); } catch (e) { print('获取产品失败: $e'); // 这里可以添加错误提示的UI逻辑 } }
方案二:手动实现OAuth1签名(更灵活)
如果不想用第三方包,或者需要自定义请求逻辑,可以用oauth1包手动处理签名:
步骤1:添加依赖
dependencies: flutter: sdk: flutter http: ^0.13.5 oauth1: ^2.0.0
步骤2:编写认证请求代码
import 'package:http/http.dart' as http; import 'package:oauth1/oauth1.dart' as oauth1; import 'dart:convert'; // 替换为你的密钥和站点地址 final String consumerKey = 'YOUR_CONSUMER_KEY'; final String consumerSecret = 'YOUR_CONSUMER_SECRET'; final String baseUrl = 'http://jalania.com'; // 配置OAuth1平台参数(WooCommerce的OAuth1不需要单独的请求/访问Token端点,直接签名即可) final platform = oauth1.Platform( '${baseUrl}/wp-json/wc/v2/', '', // 留空即可 '', // 留空即可 oauth1.SignatureMethods.hmacSha1, ); final clientCredentials = oauth1.ClientCredentials(consumerKey, consumerSecret); final authClient = oauth1.Authorization(clientCredentials, platform); Future<void> fetchProducts() async { try { // 创建GET请求 final request = http.Request('GET', Uri.parse('${baseUrl}/wp-json/wc/v2/products')); // 给请求添加OAuth1签名 await authClient.signRequest(request); // 发送请求并处理响应 final response = await http.Client().send(request); final responseBody = await response.stream.bytesToString(); setState(() { data = jsonDecode(responseBody); }); } catch (e) { print('请求出错: $e'); } }
重要注意事项
- 权限检查:确保你在WooCommerce后台创建的Consumer Key拥有「读产品」的权限(创建密钥时可以选择权限范围)
- API版本:WooCommerce现在推荐用v3版本的API,把URL改成
/wp-json/wc/v3/products兼容性更好 - HTTPS问题:如果你的站点是HTTPS,要确保证书有效;本地测试如果遇到SSL错误,可以暂时添加
http.Client的信任配置,但生产环境必须用合法证书
内容的提问来源于stack exchange,提问作者Panahbiru
相关产品推荐
相关产品推荐

