web-dev-qa-db-ja.com

FlutterモバイルアプリケーションのAPI呼び出しで基本認証資格情報を渡す方法は?

私は、基本認証を使用するAPIを呼び出す必要があるシンプルなFlutterモバイルアプリに取り組んでいます。

電子メールとパスワードの資格情報を使用してPostmanでAPIにアクセスし、要求を実行する前にBase64で電子メールとパスワードをエンコードします(「:」区切りで想定)。

Flutter/Dartでこれを行う方法がわかりません...

Httpパッケージをいじくり回してBase64エンコードを試みましたが、サーバーからエラーが返されるだけです。

誰でも基本的な認証リクエストのガイダンスや例を提供できますか?

10
Eric Wilhite

サーバーがusername:password comboはUTF-8をエンコードし(詳細については RFC 7617 を参照)、これを使用します。

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