fresh
Dart用のトークンリフレッシュライブラリです。このパッケージは、RESTやGraphQLなど、さまざまなリフレッシュトークン実装に共通するコアコンポーネントを公開しています。
🍋 Dart用のトークンリフレッシュライブラリ。
以下は英語原文のスナップショットです。最新版は GitHub をご覧ください。
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.
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.
| Package | Pub |
|---|---|
| fresh | |
| fresh_dio | |
| fresh_graphql | |
| fresh_http |
authenticationStatus stream for reacting to login/logout eventsTokenStorage - bring your own persistence layerOAuth2Token with expiresAt supportfinal 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.
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.
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.
Dart用のトークンリフレッシュライブラリです。このパッケージは、RESTやGraphQLなど、さまざまなリフレッシュトークン実装に共通するコアコンポーネントを公開しています。
トークンの更新用HTTPインターセプター。Freshはpackage:dioに基づき、認証トークンを透明に管理します。
トークンの更新用のGraphQLリンク。package:graphqlに基づいて構築され、認証トークンを透明に管理します。
自動更新機能付きのHTTPクライアント。package:http をベースに構築され、認証トークンを透明に管理します。
用途で絞り込み、開発状況を比較し、採用前に元のリポジトリで要件を確認しましょう。
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗