api - postman 上的授权类型不记名 token 和来自 API 的请求数据,这需要带有 flutter 的 token 不记名

标签 api flutter dart postman bearer-token

我试图从我的 API 请求数据并获取数据,它需要一个可以通过登录获得的不记名 token 。作为前端,我创建了一个函数来保存和请求从 UI 到 API。我正在为 UI 使用 flutter 框架。
我设法创建了一个函数来存储登录时生成的不记名 token ,使用户保持登录状态。它通过将不记名 token 保存在 sharedpref 中来工作。

login() async {
final response = await http.post(
  "https://api.batulimee.com//v1_ship/login_app",
  body: {"email": email, "password": password},
);  
final data = jsonDecode(response.body);
String status = data['status'];
String pesan = data['message'];
String apikey = data['data']['apikey'];
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('apikey', apikey);

if (status == "success") {
  Navigator.of(context).pushReplacement(PageRouteBuilder(
      pageBuilder: (_, __, ___) => new bottomNavBar(),
      transitionDuration: Duration(milliseconds: 600),
      transitionsBuilder:
          (_, Animation<double> animation, __, Widget child) {
        return Opacity(
          opacity: animation.value,
          child: child,
        );
      }));
  print(pesan);
  print(apikey);
} else {
  print(pesan);
}
}
这是回应。
{
"status": "success",
"data": {
    "apikey": "UUFmb0w3WlI4Q01qOWRTamgxOFVZRjhIeWhFMkN3T205R20xZXNpYw==",
    "id_user": 50,
    "id_role": "8",
    "name_role": "Ship Owner",
    "email": "me@gmail.com",
    "phone": "0210201",
    "saldo": "0",
    "photo": "https://cdn.batulimee.com/foto_user/avatar.png"
},
"message": "login successfully "
}
现在我想创建一个可以获取用户配置文件数据的函数,并且在哪里获取这些数据需要我从登录中获得的不记名 token 。我需要这个,以便用户可以在用户的​​个人资料中编辑他们的姓名、密码或其他数据并保存。
我的后端创建了 API get my_profile。我之前解释过,要获得它需要一个与我们之前从登录获得的 token 持有者相同的 token 持有者。现在我的工作是使用 Flutter 中的函数获取 get my_profile 数据。
继承人来自 API 的响应 get my_profile。
{
"status": "success",
"data": {
"id_user": 49,
"id_role": "8",
"name_role": "Ship Owner",
"first_name": "a",
"last_name": "f",
"email": "afriansyahm86@gmail.com",
"phone": "082258785595",
"saldo": "0",
"company_name": "aa",
"company_address": "jl kav pgri",
"photo": "https://batulimee.com/foto_user/avatar.png"
},
"message": "get profile detail successfully "
}
enter image description here
将不记名 token 存储到授权中以便我可以获取 my_profile 数据的功能如何?请帮我.... :(

最佳答案

创建一个 api 类:

import 'package:http/io_client.dart';
class Api {

  String _token;

 final Client http =IOClient(HttpClient()
    ..badCertificateCallback = _certificateCheck
    ..connectionTimeout = const Duration(seconds: kConnectionTimeoutSeconds));
static bool _certificateCheck(X509Certificate cert, String host, int port) =>
  host.endsWith('EXAMPLE.com'); // Enter your url for api here
  String GetToken() {
    return _token;
  }
Future<bool> setToken(String token) async {
    _token = token;
    return Future.value(true);
  }
Map<String, String> get headers => {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Authorization": "Bearer $_token",
      };
}
在您的登录中使用 setToken:
等待_api.setToken(apikey);
接下来为您的个人资料或 api 类中的任何请求:
Future<ProfileResponse> getProfile() async {
    var url = "$urlPrefix/api/v1/profile";

    var response = await http.get(url, headers: headers);

    if (response.statusCode != 200) {
      print(
          "$response");
      var parsed = json.decode(response.body);
      var message = parsed["message"];
      if (message != null) {
        throw message;
      }

      throw Exception(
          "Request to $url failed with status ${response.statusCode}: ${response.body}");
    }
    // return the response you want 
    return json.decode(response.body);
  }

关于api - postman 上的授权类型不记名 token 和来自 API 的请求数据,这需要带有 flutter 的 token 不记名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64531607/

相关文章:

c# - 使用用户名/密码访问 Google Calendar API

flutter : Vertically center column

dart - 在 dart 聚合物重复模板中获取索引

flutter - 从另一个对话框中显示对话框

android - 如何在 Flutter 中集成 Instagram 登录

android-studio - 在物理设备中运行时,Flutter 中的热重载不起作用

ruby-on-rails-3 - Rails API - Versionist vs Rocket Pants

python - 自动重新加载在 Bottle 框架中不起作用

php - 如何从 Magento 1.7 REST API 获取访问 token 和访问 token secret

regex - 全名正则表达式不起作用