You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter 2+中使用OAuth发起WooCommerce HTTP请求?

Fixing WooCommerce OAuth Requests in Flutter 2+

Hey Alexandru, sorry to hear you've been stuck with this OAuth issue—let’s get you sorted out! The FlutterOAuth library you tried is indeed outdated and doesn’t support Flutter 2+’s null safety, but we’ve got two reliable solutions to make those WooCommerce API calls work.

Option 1: Use a Null-Safe WooCommerce Dart Library (Easiest Path)

The simplest way is to use a maintained, null-safe package built specifically for WooCommerce. It handles all the OAuth signing behind the scenes, so you don’t have to mess with low-level details.

Steps to Implement:

  1. Add the dependency to your pubspec.yaml:
dependencies:
  woocommerce: ^2.0.0 # Always check for the latest null-safe version
  1. Initialize the WooCommerce client with your credentials:
import 'package:woocommerce/woocommerce.dart';

final wooCommerce = WooCommerce(
  url: "https://your-store-domain.com", // Trailing slash is optional
  consumerKey: "your-consumer-key-here",
  consumerSecret: "your-consumer-secret-here",
);
  1. Make API calls (example: fetching products):
Future<void> loadWooCommerceProducts() async {
  try {
    List<WooProduct> products = await wooCommerce.getProducts();
    print("Fetched ${products.length} products!");
    // Handle your product data here (display in UI, parse, etc.)
  } catch (e) {
    print("Oops, error fetching products: $e");
    // Add error handling (show snackbar, retry logic, etc.)
  }
}

Option 2: Manual OAuth 1.0a Signing (For Full Control)

If you prefer to handle the OAuth flow yourself (or avoid extra dependencies), you can use the http package alongside the null-safe oauth1 library to sign requests manually. WooCommerce uses OAuth 1.0a with HMAC-SHA1 signing.

Steps to Implement:

  1. Add the required dependencies:
dependencies:
  http: ^0.13.4
  oauth1: ^2.0.0
  1. Set up the OAuth client and sign your requests:
import 'package:http/http.dart' as http;
import 'package:oauth1/oauth1.dart' as oauth;

// Configure your WooCommerce credentials
final clientCredentials = oauth.ClientCredentials(
  'your-consumer-key-here',
  'your-consumer-secret-here',
);

// Define WooCommerce's OAuth platform settings (no request/access token steps needed)
final wooCommercePlatform = oauth.Platform(
  requestTokenUrl: null,
  authorizeUrl: null,
  accessTokenUrl: null,
  signatureMethod: oauth.SignatureMethod.hmacSha1,
);

final oauthClient = oauth.Client(clientCredentials, wooCommercePlatform);

// Example: Fetch products with a signed GET request
Future<void> fetchProductsManually() async {
  final apiUrl = Uri.parse('https://your-store-domain.com/wp-json/wc/v3/products');
  
  // Generate a signed request (handles OAuth headers/signature)
  final signedRequest = oauthClient.signRequest(apiUrl, http.Method.get);
  
  final response = await http.get(
    signedRequest.url,
    headers: signedRequest.headers,
  );

  if (response.statusCode == 200) {
    print("Success! Response: ${response.body}");
    // Parse the JSON response into your model classes
  } else {
    print("Request failed with status code: ${response.statusCode}");
    print("Error message: ${response.body}");
  }
}

Quick Troubleshooting Tips

  • Double-check your Consumer Key/Secret: Make sure they’re generated from WooCommerce > Settings > Advanced > REST API, and have the correct permissions (e.g., "Read" for fetching products).
  • Verify your store URL: Ensure it’s the full base URL of your WooCommerce store (no typos!).
  • CORS issues (Flutter Web): If you’re building for web, you’ll need to enable CORS on your WooCommerce site—install a CORS plugin or configure your server to allow requests from your web domain.

内容的提问来源于stack exchange,提问作者Alexandru Nitu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:35:20