小编Vi.*_*Vi.的帖子

Flutter Dio 拦截器错误:错误状态:Future 已完成

我有一个拦截器可以在 jwt 过期时发送jwt token和使用端点。refresh_token有了过期的 jwt 我得到

Error: Bad state: Future already completed
Run Code Online (Sandbox Code Playgroud)

错误,但请求仍然被正确处理。在控制台中,我看到一个成功的响应,另一个随后出现 401 错误。我该如何解决这个问题?

自定义拦截器.dart

class CustomInterceptor extends DefaultInterceptor {
  ISecureStorage secureStorageService = ISecureStorage();

  @override
  void onRequest(
      RequestOptions options, RequestInterceptorHandler handler) async {
    LoginModel loginModel = await secureStorageService.readLoginModel();

    options.headers = {
      "Content-type": "application/json",
      "Authorization": "Bearer ${loginModel.access_token}"
    };
    return super.onRequest(options, handler);
  }

  @override
  void onError(err, handler) async {
    if (err.response?.statusCode == 401) {
      final Dio _dio = DioConfig().dio;
      LoginModel loginModel = await secureStorageService.readLoginModel();
      Uri uri = …
Run Code Online (Sandbox Code Playgroud)

interceptor dart flutter dio

5
推荐指数
1
解决办法
1万
查看次数

为仅限 Rails Api 的应用程序实现社交登录

我正在努力寻找一种工作方法来通过 Facebook 和 Google 为我现有的仅 api 的 Rails 应用程序实现 oauth2 登录。登录流程和 jwt 管理是通过 Devise & Doorkeeper 完成的,遵循本指南完成的。

我尝试使用Doorkeeper-grants-assertion示例,但它们都不起作用。我遇到的问题是我无法用我的 jwt 令牌交换提供商的令牌。

客户端(Android 和 iOS 应用程序)我可以使用提供商登录并获取令牌,但是当我尝试授权用户创建新令牌时,它给我错误。

代码与示例相同。对于 Google,我正在跳过令牌请求,因为我已经可以从客户端获取它:

class GoogleController

  def initialize(auth_code)
    @auth_code = auth_code
    @user_data = user_data
  end

  def user_data
    url = "https://www.googleapis.com/oauth2/v3/userinfo?access_token=" + @auth_code
    response = Faraday.get(url, {:Accept => 'application/json'})
    @resp = JSON.parse(response.body)
  end

  def email
    @resp['email']
  end

  def first_name
    @resp['first_name']
  end

  def last_name
    @resp['last_name']
  end

  def get_user!
    # below you should implement the logic to …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise oauth-2.0 jwt doorkeeper

2
推荐指数
1
解决办法
1716
查看次数

标签 统计

dart ×1

devise ×1

dio ×1

doorkeeper ×1

flutter ×1

interceptor ×1

jwt ×1

oauth-2.0 ×1

ruby-on-rails ×1