I'm working on a simple Flutter mobile app that needs to call out to an API that uses Basic Auth.
I can hit the API in Postman using email & password credentials and it encodes the email & password in Base64 (I assume with a ":" separating) before performing the request.
I'm not sure how to do this in Flutter / Dart...
I've tinkered with the http package and tried to do the Base64 encoding... but I just get back errors from the server.
Can anyone provide some guidance or an example for a basic auth request?
HTTP Request with Basic Authentication in Flutter Remembering that Basic Authentication requires that username:password to be Base64 encoded, which in Flutter is done through the Base64Encoder class (https://api.dartlang.org/stable/2.7.0/dart-convert/Base64Encoder-class.html).
You can pass in the API Key to our APIs either by using the HTTP Basic authentication header or by sending an api_key parameter via the query string or request body. If you use our client library CARTO. js, you only need to follow the authorization section and we will handle API Keys automatically for you.
Assuming that your server expects that the username:password
combo will be encode it UTF-8 (see RFC 7617 for more details) then use this:
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); }
I know it's late but I am posting this if it can help others.
import 'dart:convert'; var auth = 'Basic '+base64Encode(utf8.encode('$username:$password')); Future<Response> callAPI(param) async { await dio.post('/api/test', data: {'param': param}, options: Options(headers: <String, String>{'authorization': auth})); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With