web-dev-qa-db-fra.com

Comment transmettre les informations d'authentification de base dans un appel API pour une application mobile Flutter?

Je travaille sur une application mobile Flutter simple qui doit appeler une API qui utilise l'authentification de base.

Je peux accéder à l'API dans Postman en utilisant les informations d'identification par e-mail et mot de passe et il encode l'e-mail et le mot de passe en Base64 (je suppose avec un ":" séparant) avant d'effectuer la demande.

Je ne sais pas comment faire ça dans Flutter/Dart ...

J'ai bricolé le paquet http et essayé de faire l'encodage Base64 ... mais je récupère juste des erreurs du serveur.

Quelqu'un peut-il fournir des conseils ou un exemple pour une demande d'authentification de base?

10
Eric Wilhite

En supposant que votre serveur attend que le username:password le combo sera encodé en UTF-8 (voir RFC 7617 pour plus de détails) puis utilisez ceci:

import 'Dart:convert';

import 'package:http/http.Dart';

main() async {
  String username = 'test';
  String password = '123£';
  String basicAuth =
      'Basic ' + base64Encode(utf8.encode('$username:$password'));
  print(basicAuth);

  Response r = await get('https://api.somewhere.io',
      headers: <String, String>{'authorization': basicAuth});
  print(r.statusCode);
  print(r.body);
}
30
Richard Heap