【问题标题】:How to access Woocommerce API with Flutter?如何使用 Flutter 访问 Woocommerce API?
【发布时间】:2018-04-12 02:12:40
【问题描述】:

Woocommerce API 使用消费者密钥/秘密实现 Oauth1。

这是我使用 Flutter 访问 WordPress API 的代码

Future<String> getData() async {

var response = await http.get(
    Uri.encodeFull( "http://jalania.com/wp-json/wp/v2/posts" ),
    headers: {"Accept": "application/json"});
this.setState(() {
  data = JSON.decode(response.body);
});
}

我已将 API url 更改为 Woocommerce API,http://jalania.com/wp-json/wc/v2/products 并得到空响应。

有人知道如何使用 Flutter 访问 Woocommerce API 吗?

【问题讨论】:

标签: php android wordpress woocommerce flutter


【解决方案1】:

您可能想使用这个:https://github.com/lakexyde/dart-woocommerce-api。虽然仍然需要一些清洁,但它确实有效。

Map<String,dynamic> params = {
  "url": 'https://example.com',
  "consumerKey": "ck_XXXXXXXXXXXXXXXXXXXXXXXXX",
  "consumerSecret": "cs_XXXXXXXXXXXXXXXXXXXXXXXX",
  "wpAPI": true,
  "version": 'wc/v2'
}

然后:

WooCommerceAPI wooAPI = new WooCommerceAPI(params);

希望对你有帮助。

【讨论】:

    【解决方案2】:

    需要向 WooCommerce API 添加授权。我不知道如何在 Flutter 中添加授权参数。但是你需要添加类似下面的代码。

    Future<String> getData() async {
    
    var response = await http.get(
        Uri.encodeFull( "http://jalania.com/wp-json/wp/v2/posts" ),
        authorization:{"consumer_key": "XXXXXXXX1212","consumer_secret":"XXXXX1212"},
        headers: {"Accept": "application/json"});
    this.setState(() {
      data = JSON.decode(response.body);
    });
    }
    

    【讨论】:

      【解决方案3】:
      List<Widget> products = [];
      
      Future getProducts() async {
      
          /// Initialize the API
          WooCommerceAPI wc_api = new WooCommerceAPI(
              "https://www.yourwebsite.com",
              "ck_your_consumer_key",
              "cs_your_consumer_secret"
          );
      
          /// Get data using the endpoint
          var p = await wc_api.getAsync("products");
          return p;
      }
      

      可以帮到你:https://pub.dev/packages/woocommerce_api#-installing-tab-

      【讨论】:

        【解决方案4】:

        这就是我正在使用的:https://pub.dev/packages/woosignal

        它也返回对象模型,这里有一些文档 - https://woosignal.com/docs/api/1.0/installing-flutter-sdk

        Packages get

        dependencies:
          woosignal: ^1.0.2
        
        // CONFIG FOR WOOSIGNAL
        var wsConfig = {
        "appKey":"your app key",
        "debugMode":true
        };
        
        // CREATING AN INSTANCE
        WooSignal.getInstance(config: wsConfig).then( (wcStore) {
        
            wcStore.getProducts().then( (products) {
                print(products[0].name);
            });
        
        });
        
        

        【讨论】:

          【解决方案5】:

          如果您想要一个完整的即插即用 Woocommerce Sdk 来为您处理身份验证、产品、客户、运输等,您可以在 https://pub.dev/packages/woocommerce 使用 Woo Commerce SDK 库进行颤振

          Woocommerce myWoocommerce = WooCommerce(baseUrl: yourBaseUrl, consumerKey: yourConsumerKey, consumerSecret: consumerSecret);
          

          然后只需注册您的新客户。

          WooCustomer newCustomer = WooCustomer(id: id, firstName:firstName, etc);
          myWoocommerce.createCustomer(newCustomer); //Returns the created Woocommerce customer.
          

          【讨论】:

            【解决方案6】:

            我正在尝试使用颤振 wooCommerce api 文档 https://pub.dev/packages/woocommerce_api#-readme-tab-

            但在我的情况下它不起作用,有带有 url 的 consumerKey 和 consumerSecret。在邮递员中,它返回值 但不是在 Flutter 代码中。以下步骤在我的项目中起作用

            Future<dynamic> getData() async {
                var response = await http.get("URL",
                  headers: {
                    "Authorization": "AuthorizationToken"},
                ).catchError(
                      (error) {
                    return false;
                  },
                );
            
                return json.decode(response.body);
              }
            

            您可以在哪里使用 Postman 获得“授权”。用consumerKey和consumerSecret点击url后,Postman生成AuthorizationToken,然后你就可以这样使用AuthorizationToken了。

            【讨论】:

              【解决方案7】:

              如果您需要自定义数据,这是我的解决方案:

              首先我安装了包 https://pub.dev/packages/woocommerce,但他们的 api woocommerce.getProducts() 没有提供我需要的信息(acf 中的自定义数据),所以我做了以下操作:

              1. 我做了一个 github 项目的 fork :https://github.com/RayOkaah/woocommerce

              2. 我使用终端 git clone [FORKED PROJECT URL] 克隆了分叉项目(例如 git clone https://github.com/MireilleKhalifeh/woocommerce.git

              3. 我在 products.dart 文件中进行了更改(位于 /wocommerce/lib/models/ 中):我创建了 Acf 类,然后像其他变量一样将 Acf 变量添加到 WooProduct 类。

              4. 推送我的更改。

              5. 在我的flutter项目中,在pubspec.yaml下添加了dependencies:

                dependencies:
                
                  woocommerce:
                    git: [FORKED PROJECT URL] #for example https://github.com/MireilleKhalifeh/woocommerce.git
                

              现在我可以从他们的 Product 类访问 Acf 类中的数据了。

              Future getProducts() async {
                WooCommerce woocommerce = WooCommerce(
                  baseUrl: '[url]',
                  consumerKey: '[consumerKey]',
                  consumerSecret: '[consumerSecret]',
                  isDebug: false);
                Machine.products = await woocommerce.getProducts();
                return Future.value(MyHomePage());
              }
              

              我这样访问它:

              Machine.products[0].acf.model
              

              我希望它有帮助。

              【讨论】:

                猜你喜欢
                • 2021-05-10
                • 2021-07-09
                • 1970-01-01
                • 2020-10-10
                • 1970-01-01
                • 2017-05-05
                • 1970-01-01
                • 2022-10-18
                • 2019-11-19
                相关资源
                最近更新 更多