Query Stack Firebase Authentication
A Firebase Authentication service for Query Stack
Usage
Just register the AuthenticationService
on your environment:
@immutable
class DevelopmentEnvironment extends Environment {
const DevelopmentEnvironment();
@override
void registerDependencies(RegisterDependenciesDelegate when, PlatformInfo platformInfo) {
when<AuthenticationService>(
(get) => AuthenticationService(
appleRedirectUrl: platformInfo.nativePlatform.when(
onAndroid: () => "redirect url when using android",
onWeb: () => "redirect url when using web",
orElse: () => null,
),
appleServiceId: "apple sign in service id",
googleClientId: platformInfo.nativePlatform.when(
onAndroid: () => "google client id for android",
oniOS: () => "google client id for ios",
onWeb: () => "google client id for web",
orElse: () => throw UnsupportedError("${platformInfo.nativePlatform} is not supported"),
),
),
);
// register the rest of your dependencies
}
You can inherit AuthenticationService
and override the methods fetchPesistedPrincipal
and persistPrincipal
if you want to, for instance, save your authenticated user in your database.
Principal
An authenticated user is called Principal
and has the same properties of Firebase Authentication user:
id, displayName, email, avatarURL (photoURL in firebase), creationTime and lastLogin.
lastLogin is a PrincipalLogin
class with authProvider (Google or Apple), the current
device id, model, device, version (i.e.: Android 13), platform (ios, Android, etc.) and
last sign in time.