Code Monkey home page Code Monkey logo

firebase_auth_rest's Introduction

firebase_auth_rest

Continous Integration Pub Version

A platform independent Dart/Flutter Wrapper for the Firebase Authentication API based on REST

Features

  • Pure Dart-based implementation
    • works on all platforms supported by dart
  • Uses the official REST-API endpoints
  • Provides high-level classes to manage authentication and users
  • Supports multiple parallel Logins of different users
  • Supports automatic background refresh
  • Supports all login methods
  • Proivides low-level REST classes for direct API access (import firebase_auth_rest/rest.dart)

Installation

Simply add firebase_auth_rest to your pubspec.yaml and run pub get (or flutter pub get).

Usage

The libary consists of two primary classes - the FirebaseAuth and the FirebaseAccount. You can use the FirebaseAuth class to perform "global" API actions that are not directly tied to a logged in user - This are things like creating accounts and signing in a user, but also functions like resetting a password that a user has forgotten.

The sign in/up methods of FirebaseAuth will provide you with a FirebaseAccount. It holds the users authentication data, like an ID-Token, and can be used to perform various account related operations, like changing the users email address or getting the full user profile. It also automatically refreshes the users credentials shortly before timeout - allthough that can be disabled and done manually.

Thw following code is a simple example, which can be found in full length, including errorhandling, at https://pub.dev/packages/firebase_auth_rest/example. It loggs into firebase as anonymous user, prints credentials and account details and then proceeds to permanently delete the account.

// Create auth instance and sign up as anonymous user
final fbAuth = FirebaseAuth(Client(), "API-KEY");
final account = await fbAuth.signUpAnonymous();

// print credentials und user details
print("Local-ID: ${account.localId}");
final userInfo = await account.getDetails();
print("User-Info: $userInfo");

// delete and dispose the account
await account.delete();
account.dispose();

Documentation

The documentation is available at https://pub.dev/documentation/firebase_auth_rest/latest/. A full example can be found at https://pub.dev/packages/firebase_auth_rest/example.

firebase_auth_rest's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

firebase_auth_rest's Issues

Why this lib does not based on googleapis_auth?

I was wondering.
If you are saying in the package that

Uses the official REST-API endpoints

Wouldn't it be less work to based this on the official package from google googleapis_auth ?.
It support all platforms and will "Provides support for obtaining OAuth2 credentials to access Google APIs." for you.

This repository might be no longer needed

If your goal was to support Huawei devices without the Play Store, then this is no longer needed.

Firebase Auth (the official one) now supports non-play-store devices as well.

Method not found: 'FallThroughError' Dart 3.0

FallThroughError was removed in Dart 3.0 andcause compile errors.

dart-lang/sdk@bcbf24e

../../../.pub-cache/hosted/pub.dev/firebase_auth_rest-2.0.3/lib/src/models/update_response.freezed.dart:31:13: Error: Method not found: 'FallThroughError'. throw FallThroughError(); ^^^^^^^^^^^^^^^^ ../../../.pub-cache/hosted/pub.dev/firebase_auth_rest-2.0.3/lib/src/models/update_request.freezed.dart:31:13: Error: Method not found: 'FallThroughError'. throw FallThroughError(); ^^^^^^^^^^^^^^^^ ../../../.pub-cache/hosted/pub.dev/firebase_auth_rest-2.0.3/lib/src/models/signin_response.freezed.dart:29:13: Error: Method not found: 'FallThroughError'. throw FallThroughError(); ^^^^^^^^^^^^^^^^ ../../../.pub-cache/hosted/pub.dev/firebase_auth_rest-2.0.3/lib/src/models/signin_request.freezed.dart:29:13: Error: Method not found: 'FallThroughError'. throw FallThroughError(); ^^^^^^^^^^^^^^^^ ../../../.pub-cache/hosted/pub.dev/firebase_auth_rest-2.0.3/lib/src/models/oob_code_request.freezed.dart:23:13: Error: Method not found: 'FallThroughError'. throw FallThroughError(); ^^^^^^^^^^^^^^^^ ../../../.pub-cache/hosted/pub.dev/firebase_auth_rest-2.0.3/lib/src/models/password_reset_request.freezed.dart:23:13: Error: Method not found: 'FallThroughError'. throw FallThroughError(); ^^^^^^^^^^^^^^^^

QT Modules

Hello SkyCoder , I've been using your qt modules for at least 2 years on my proyects ( not commercial) , last week my hdd died and had to reinstall my development environment, but i found that your modules are not available anymore and I almost cried . Particurarly im using the qtmvvm and qtjsonserializer , i would love to continue your work by uploading them on a open server (same as yours) and obviously making enhancements. I read on the repos the steps to build the modules but i got stuck. Could you help me ?

signInWithCustomToken: type 'Null' is not a subtype of type 'String' in type cast

[ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: type 'Null' is not a subtype of type 'String' in type cast
#0      _$_$CustomTokenSignInResponseFromJson (package:firebase_auth_rest/src/models/signin_response.g.dart:106:30)
#1      new _$CustomTokenSignInResponse.fromJson (package:firebase_auth_rest/src/models/signin_response.freezed.dart:1703:7)
#2      RestApi.signInWithCustomToken (package:firebase_auth_rest/src/rest_api.dart:99:33)
<asynchronous suspension>
#3      FirebaseAuth.signInWithCustomToken (package:firebase_auth_rest/src/firebase_auth.dart:209:9)
<asynchronous suspension>

Which is here:

_$CustomTokenSignInResponse _$_$CustomTokenSignInResponseFromJson(
    Map<String, dynamic> json) {
  return _$CustomTokenSignInResponse(
    idToken: json['idToken'] as String,
    refreshToken: json['refreshToken'] as String,
    expiresIn: json['expiresIn'] as String,
    localId: json['localId'] as String, // <<<< NPE
  );
}

In the code CustomTokenSignInResponse declares localId, however looking at the doc it should not be there:
https://firebase.google.com/docs/reference/rest/auth#section-verify-custom-token

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.