パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.8.0

fresh_graphql

トークンの更新用のGraphQLリンク。package:graphqlに基づいて構築され、認証トークンを透明に管理します。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
3410
いいね数
38
Pub ポイント
160

パッケージをインストール

flutter pub add fresh_graphql

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

Fresh GraphQL は、GraphQL リクエストの自動トークン更新メカニズムを提供することで、graphql パッケージの機能を拡張する Flutter/Dart パッケージです。認証トークンをシームレスに処理し、リクエストが期限切れになる前に更新されるようにします。コアの graphql パッケージに基づいて構築されており、永続的な認証が必要なアプリケーションにおける安全な API 通信を簡素化します。JWT や同様のトークンベースの認証システムを使用するアプリケーションに最適です。

用途

  • 自動リフレッシュで安全なGraphQL APIアクセス
  • ユーザーの介入なしで有効期限が切れたトークンを処理する
  • JWTベースの認証との統合
  • アプリの再起動にわたって認証済みセッションを管理する
  • 認証トークンの状態管理を簡素化する

主な機能

  • 自動トークンの更新
  • graphql パッケージとの透過的な統合
  • カスタムトークン更新ロジックのサポート
  • 失敗したリクエスト用の組み込み再試行メカニズム
  • クロスプラットフォーム互換性

適している対象

  • JWT や OAuth2 を使用するアプリ
  • シームレスな認証処理を求める開発者
  • 頻繁なGraphQL呼び出しを持つプロジェクト
  • 開発者体験を重視するチーム
  • 堅牢なセッション管理を必要とするアプリケーション

注意事項

  • トークンのリフレッシュエンドポイントの適切な設定が必要です
  • 外部認証サービスの利用可能性に依存します
  • 非標準の認証フローにはカスタマイズが必要になる場合があります
  • トークンなしのステートレスAPIには適していません
  • graphql パッケージでのみ使用可能

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

Fresh 🍋

build License: MIT GitHub stars


A collection of packages for automatic token refresh in Dart and Flutter. Fresh handles refreshing, caching, and attaching authentication tokens transparently so your API calls just work.

Why Fresh?

Token-based authentication seems simple until you handle the edge cases: tokens expire mid-session, multiple requests fail at the same time triggering duplicate refreshes, refresh tokens get revoked, and you need to route users to login when auth is lost. Fresh handles all of this so you don't have to.

  • No more manual 401 handling scattered across your codebase
  • No more race conditions when concurrent requests trigger simultaneous refreshes
  • No more stale tokens causing request failures - expired tokens are refreshed proactively before the request is even sent

Packages

Package Pub
fresh pub package
fresh_dio pub package
fresh_graphql pub package
fresh_http pub package

Features

  • Automatic token refresh on 401 / auth errors, with automatic request retry
  • Proactive refresh before requests when the token is expired
  • Single-flight refresh - concurrent requests share one refresh call instead of triggering multiple
  • authenticationStatus stream for reacting to login/logout events
  • Pluggable TokenStorage - bring your own persistence layer
  • Built-in OAuth2Token with expiresAt support

Usage

fresh_dio
final dio = Dio();

dio.interceptors.add(
  Fresh.oAuth2(
    tokenStorage: InMemoryTokenStorage<OAuth2Token>(),
    refreshToken: (token, client) async {
      final response = await client.post(
        'https://api.example.com/auth/refresh',
        data: {'refresh_token': token?.refreshToken},
      );
      return OAuth2Token(
        accessToken: response.data['access_token'],
        refreshToken: response.data['refresh_token'],
      );
    },
  ),
);

See the fresh_dio README for full documentation.

fresh_graphql
import 'dart:convert';

final freshLink = FreshLink.oAuth2(
  tokenStorage: InMemoryTokenStorage<OAuth2Token>(),
  refreshToken: (token, client) async {
    final response = await client.post(
      Uri.parse('https://api.example.com/auth/refresh'),
      body: jsonEncode({'refresh_token': token?.refreshToken}),
    );
    final body = jsonDecode(response.body) as Map<String, dynamic>;
    return OAuth2Token(
      accessToken: body['access_token'],
      refreshToken: body['refresh_token'],
    );
  },
  shouldRefresh: (response) =>
      response.errors?.any((e) => e.message.contains('UNAUTHENTICATED')) ?? false,
);

// HttpLink comes from package:gql_http_link
final link = Link.from([freshLink, HttpLink('https://api.example.com/graphql')]);

See the fresh_graphql README for full documentation.

fresh_http
import 'dart:convert';

final client = Fresh.oAuth2(
  tokenStorage: InMemoryTokenStorage<OAuth2Token>(),
  refreshToken: (token, client) async {
    final response = await client.post(
      Uri.parse('https://api.example.com/auth/refresh'),
      body: jsonEncode({'refresh_token': token?.refreshToken}),
    );
    final body = jsonDecode(response.body) as Map<String, dynamic>;
    return OAuth2Token(
      accessToken: body['access_token'],
      refreshToken: body['refresh_token'],
    );
  },
);

See the fresh_http README for full documentation.

カテゴリー

依存関係

依存関係一覧 4 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。