Как сделать аутентификацию API WordPress в флаттер - PullRequest
0 голосов
/ 14 февраля 2019

Я делаю приложение для флаттера, в котором нужно извлекать данные из защищенного API, созданного в WordPress. Теперь в почтальоне мне нужно только вставить ключ клиента и секрет клиента в аутентификации Oauth 1, и все работает нормально. Но во флаттереПриложение сообщает, что данные подписи недействительны. Почему?

Я следовал официальному руководству от woocommerce Api, но не смог. Как я могу сделать API WordPress в флаттер в дартс? Я новичок в флаттер, и это очень важнодля меня. Так как я могу получить данные? Есть ли какой-нибудь метод для достижения того, что я хочу?

1 Ответ

0 голосов
/ 10 апреля 2019

Насколько я понимаю, вы ищете что-то вроде этого

  1. Вы хотите отобразить продукты из wooCommerce с помощью REST API.
  2. И вы хотите, чтобыбыть сделано во Flutter Dart.
  3. Авторизация для пользователей.

Самое первое, что нужно сделать, это аутентифицировать пользователя, используя имя пользователя и пароль, чтобы сделать это, мы должны сделатьчто-то вроде этого

Для Auth необходимо установить имя плагина JWT JWT Authentication для WP-API в WordPress

Затем использовать этот URL в Flutter

    Future<http.Response> login(String username, String password) async {
    final http.Response response = await http.post('https://domina-name/wp-json/jwt-auth/v1/token?username=abc&password=xyz');
    print(response);
    return response;
  }

Эта функция извлекает данные из конечных точек API REST wooCommerce и сохраняет в списке

List<CatService> category;

Future<void> getCategoryData() async {
var res = await http.get(
    "https://domain-name/wp-json/wc/v3/products/categories?per_page=100&consumer_key=xxxxxxxxxxxxxxxxxxxxx&consumer_secret=xxxxxxxxxxxxxxx&page=1");

setState(() {
  var data = json.decode(res.body);
  var list = data as List;
  print("List of cat $list");
  categoryList =
      list.map<CatService>((json) => CatService.fromJson(json)).toList();

  category = categoryList
      .where((data) => data.count > 0 && data.catName != 'Uncategorized')
      .toList();
});

}

Теперь вам следует вызвать этот будущий метод getCategoryData, например,

void initState() {
setState(() {
  this.getCategoryData();
});
super.initState();

}

Я создал класс для CatService

class CatService {
  int catId;
  String catName;
  int count;

  CatService({this.catId, this.catName,this.count});

  factory CatService.fromJson(Map<String, dynamic> json) {
    return CatService(catId: json['id'], catName: json['name'],count: json['count']);
  }


}

Спасибо, надеюсь, это поможет вам

...