firebase_auth 0.3.1

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 99

firebase_auth plugin

A Flutter plugin to use the Firebase Authentication API.

pub package

For Flutter plugins for other Firebase products, see FlutterFire.md.

Note: This plugin is still under development, and some APIs might not be available yet. Feedback and Pull Requests are most welcome!

Usage

Configure the Google sign-in plugin

The Google Sign-in plugin is required to use the firebase_auth plugin. Follow the Google sign-in plugin installation instructions.

Import the firebase_auth plugin

To use the firebase_auth plugin, follow the plugin installation instructions.

Android integration

Enable the Google services by configuring the Gradle scripts as such.

  1. Add the classpath to the [project]/android/build.gradle file.
dependencies {
  // Example existing classpath
  classpath 'com.android.tools.build:gradle:2.3.3'
  // Add the google services classpath
  classpath 'com.google.gms:google-services:3.1.0'
}
  1. Add the apply plugin to the [project]/android/app/build.gradle file.
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

Note: If this section is not completed you will get an error like this:

java.lang.IllegalStateException:
Default FirebaseApp is not initialized in this process [package name].
Make sure to call FirebaseApp.initializeApp(Context) first.

Note: When you are debugging on android, use a device or AVD with Google Play services. Otherwise you will not be able to authenticate.

Use the plugin

Add the following imports to your Dart code:

import 'package:firebase_auth/firebase_auth.dart';

Initialize FirebaseAuth:

final FirebaseAuth _auth = FirebaseAuth.instance;

You can now use the Firebase _auth to authenticate in your Dart code, e.g.

Future<FirebaseUser> _handleSignIn() async {
  GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  GoogleSignInAuthentication googleAuth = await googleUser.authentication;
  FirebaseUser user = await _auth.signInWithGoogle(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );
  print("signed in " + user.displayName);
  return user;
}

Then from the sign in button onPress, call the _handleSignIn method using a future callback for both the FirebaseUser and possible exception.

_handleSignIn()
    .then((FirebaseUser user) => print(user))
    .catchError((e) => print(e));

Example

See the example application source for a complete sample app using the Firebase authentication.

Issues and feedback

Please file issues to send feedback or report a bug. Thank you!

0.3.1

  • Change GMS dependency to 11.+

0.3.0

  • Breaking Change: Method FirebaseUser getToken was renamed to getIdToken.

0.2.5

  • Added support for linkWithCredential with Google credential

0.2.4

  • Added support for signInWithCustomToken
  • Added Stream<FirebaseUser> onAuthStateChanged event to listen when the user change

0.2.3+1

  • Aligned author name with rest of repo.

0.2.3

  • Remove dependency on Google/SignIn

0.2.2

  • Remove dependency on FirebaseUI

0.2.1

  • Added support for linkWithEmailAndPassword

0.2.0

  • Breaking Change: Method currentUser is async now.

0.1.2

  • Added support for signInWithFacebook

0.1.1

  • Updated to Firebase SDK to always use latest patch version for 11.0.x builds

0.1.0

  • Updated to Firebase SDK Version 11.0.1
  • Breaking Change: You need to add a maven section with the "https://maven.google.com" endpoint to the repository section of your android/build.gradle. For example:
allprojects {
    repositories {
        jcenter()
        maven {                              // NEW
            url "https://maven.google.com"   // NEW
        }                                    // NEW
    }
}

0.0.4

  • Add method getToken() to FirebaseUser

0.0.3+1

  • Updated README.md

0.0.3

  • Added support for createUserWithEmailAndPassword, signInWithEmailAndPassword, and signOut Firebase methods

0.0.2+1

  • Updated README.md

0.0.2

  • Bump buildToolsVersion to 25.0.3

0.0.1

  • Initial Release

example/lib/main.dart

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn _googleSignIn = new GoogleSignIn();

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Firebase Auth Demo',
      home: new MyHomePage(title: 'Firebase Auth Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Future<String> _message = new Future<String>.value('');

  Future<String> _testSignInAnonymously() async {
    final FirebaseUser user = await _auth.signInAnonymously();
    assert(user != null);
    assert(user.isAnonymous);
    assert(!user.isEmailVerified);
    assert(await user.getIdToken() != null);
    if (Platform.isIOS) {
      // Anonymous auth doesn't show up as a provider on iOS
      assert(user.providerData.isEmpty);
    } else if (Platform.isAndroid) {
      // Anonymous auth does show up as a provider on Android
      assert(user.providerData.length == 1);
      assert(user.providerData[0].providerId == 'firebase');
      assert(user.providerData[0].uid != null);
      assert(user.providerData[0].displayName == null);
      assert(user.providerData[0].photoUrl == null);
      assert(user.providerData[0].email == null);
    }

    final FirebaseUser currentUser = await _auth.currentUser();
    assert(user.uid == currentUser.uid);

    return 'signInAnonymously succeeded: $user';
  }

  Future<String> _testSignInWithGoogle() async {
    final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
    final GoogleSignInAuthentication googleAuth =
        await googleUser.authentication;
    final FirebaseUser user = await _auth.signInWithGoogle(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    assert(user.email != null);
    assert(user.displayName != null);
    assert(!user.isAnonymous);
    assert(await user.getIdToken() != null);

    final FirebaseUser currentUser = await _auth.currentUser();
    assert(user.uid == currentUser.uid);

    return 'signInWithGoogle succeeded: $user';
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title),
      ),
      body: new Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          new MaterialButton(
              child: const Text('Test signInAnonymously'),
              onPressed: () {
                setState(() {
                  _message = _testSignInAnonymously();
                });
              }),
          new MaterialButton(
              child: const Text('Test signInWithGoogle'),
              onPressed: () {
                setState(() {
                  _message = _testSignInWithGoogle();
                });
              }),
          new FutureBuilder<String>(
              future: _message,
              builder: (_, AsyncSnapshot<String> snapshot) {
                return new Text(snapshot.data ?? '',
                    style: const TextStyle(
                        color: const Color.fromARGB(255, 0, 155, 0)));
              }),
        ],
      ),
    );
  }
}

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  firebase_auth: "^0.3.1"

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter packages get

Alternatively, your editor might support packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:firebase_auth/firebase_auth.dart';
        
Version Uploaded Documentation Archive
0.3.1 Oct 17, 2017 Go to the documentation of firebase_auth 0.3.1 Download firebase_auth 0.3.1 archive
0.3.0 Oct 17, 2017 Go to the documentation of firebase_auth 0.3.0 Download firebase_auth 0.3.0 archive
0.2.5 Oct 11, 2017 Go to the documentation of firebase_auth 0.2.5 Download firebase_auth 0.2.5 archive
0.2.4 Oct 9, 2017 Go to the documentation of firebase_auth 0.2.4 Download firebase_auth 0.2.4 archive
0.2.3 Sep 12, 2017 Go to the documentation of firebase_auth 0.2.3 Download firebase_auth 0.2.3 archive
0.2.2 Sep 11, 2017 Go to the documentation of firebase_auth 0.2.2 Download firebase_auth 0.2.2 archive
0.2.1 Sep 11, 2017 Go to the documentation of firebase_auth 0.2.1 Download firebase_auth 0.2.1 archive
0.2.0 Aug 16, 2017 Go to the documentation of firebase_auth 0.2.0 Download firebase_auth 0.2.0 archive
0.1.2 Aug 1, 2017 Go to the documentation of firebase_auth 0.1.2 Download firebase_auth 0.1.2 archive
0.1.1 Jul 7, 2017 Go to the documentation of firebase_auth 0.1.1 Download firebase_auth 0.1.1 archive

All 16 versions...

Analysis

This feature is new.
We welcome feedback.

We analyzed this package, and provided a score, details, and suggestions below.

  • completed on Dec 6, 2017
  • Dart: 2.0.0-dev.8.0
  • pana: 0.7.3+1
  • Flutter: 0.0.19

Scores

Popularity:
Describes how popular the package is relative to other packages. [more]
99
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
99
Overall score:
Weighted score of the above. [more]
99

Platforms

Detected platforms: Flutter

pubspec reference with no conflicts

Dependencies

Package Constraint Resolved Available
Direct dependencies
flutter 0.0.39
meta ^1.0.4 1.1.1 1.1.2
Transitive dependencies
async 1.13.3 2.0.1
charcode 1.1.1
collection 1.14.3
http 0.11.3+14 0.11.3+16
http_parser 3.1.1
path 1.5.1
sky_engine 0.0.99
source_span 1.4.0
stack_trace 1.9.1
string_scanner 1.0.2
typed_data 1.1.4 1.1.5
vector_math 2.0.5
Dev dependencies
test 0.12.21