poptart_oauth 0.1.1
poptart_oauth: ^0.1.1 copied to clipboard
Provides tools to handle OAuth for AT Protocol and Bluesky Social.
poptart_oauth #
AT Protocol OAuth helpers for Dart and Flutter.
This package handles client metadata loading, PAR + PKCE authorization, callback
processing, token refresh, DPoP proofs, and OAuth session types. Use it directly
when you are building an auth layer; use poptart when you want auth plus the
app-facing client in one import.
Install #
dart pub add poptart_oauth
import 'package:poptart_oauth/poptart_oauth.dart';
Flutter apps commonly pair this package with a browser callback helper such as
flutter_web_auth_2 and secure storage.
Start Authorization #
import 'package:poptart_oauth/poptart_oauth.dart';
Future<(Uri, OAuthContext)> startOAuth(String handle) async {
final metadata = await getClientMetadata(
'https://example.com/oauth/client-metadata.json',
);
final oauth = OAuthClient(metadata, service: 'bsky.social');
return oauth.authorize(handle);
}
Open the returned URI in the user agent and persist the returned
OAuthContext until the redirect comes back.
Handle The Callback #
import 'package:poptart_oauth/poptart_oauth.dart';
Future<OAuthSession> completeOAuth({
required OAuthClient oauth,
required OAuthContext context,
required String callbackUrl,
}) {
return oauth.callback(callbackUrl, context);
}
Use The Session With Poptart #
import 'package:poptart/poptart.dart';
PoptartClient clientFromOAuth(OAuthSession session) {
return PoptartClient.fromOAuthSession(session);
}
Refresh Tokens #
import 'package:poptart_oauth/poptart_oauth.dart';
Future<OAuthSession> refresh(
OAuthClient oauth,
OAuthSession current,
) {
return oauth.refresh(current);
}
Store OAuth sessions carefully. Access tokens, refresh tokens, DPoP nonce data, and key material are hot filling, not decoration.