Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework by tensor

View this thread on steempeak.com
· @tensor · (edited)
$130.06
Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework
![flutter-logo.jpg](https://steemitimages.com/DQmbFAKjCq1GWcT8qxs3NWXo5zJywJcVv9Eec35euxMs41F/flutter-logo.jpg)


#### Repository
https://github.com/flutter/flutter

#### What Will I Learn?


- You will learn how to use add authentication to Firebase/Firestore projects
- You will learn how to use OAuth 2.0 with Firebase/Firestore
- You will learn how to use image filter widgets in flutter
- You will learn how to manage singleton object in a provider class
- You will learn how to use assertions and logic to verify data


#### Requirements
##### System Requirements: 
- [IDEA intellij](https://www.jetbrains.com/idea/), [Visual Studio Code](https://code.visualstudio.com/) with the Dart/Flutter [Plugins](https://github.com/flutter/flutter-intellij), [Android Studio](https://developer.android.com/studio/index.html) or [Xcode](https://developer.apple.com/xcode/) 
- The [Flutter SDK](https://flutter.io/get-started/install/) on the latest Master Build
- An Android or iOS Emulator or device for testing
##### OS Support for Flutter:
- Windows 7 SP1 or later (64-bit)
- macOS (64-bit)
- Linux (64-bit)
#### Required Knowledge
- A little understanding of key/value stores
- A fair understanding of Mobile development and Imperative or Object Oriented Programming
- Some understanding of realtime databases

#### Resources for Flutter and this Project:
- Flutter Website: https://flutter.io/
- Flutter Official Documentation: https://flutter.io/docs/
- Flutter Installation Information: https://flutter.io/get-started/install/
- Flutter GitHub repository: https://github.com/flutter/flutter
- Flutter Dart 2 Preview Information: https://github.com/flutter/flutter/wiki/Trying-the-preview-of-Dart-2-in-Flutter
- Flutter Technical Overview: https://flutter.io/technical-overview/
- Dart Website: https://www.dartlang.org/
- Flutter Awesome GitHub Repository: https://github.com/Solido/awesome-flutter  

#### Sources:
Flutter Logo (Google): https://flutter.io/


#### Difficulty


- Intermediate


#### Description

##### Outline and Overview

In this **Flutter Video Tutorial**, we take a look at how it is possible to authenticate a user using the **Google Sign In** plugin inside of **Firebase** and **Firestore**.  The application uses a login page which allows the user to navigate to the home page only if the user is authenticated by Google.  Google sends a token to the **Firebase console** which them verifies that the user is authenticated.  If they are authenticated then the user can read and write to our **Firestore database**.  We also make use of the Image Filter Widget in this application to allow us to create a unique aesthetic for our login page.  The Singleton pattern is also used and we use assertions in our provider logic. 



##### Outline for this Tutorial

##### Item 1: Authentication via Google for Firebase/Firestore

There are various reasons why you would want to authenticate a user in a mobile application.  With **Firebase** we are able to not only restrict which users can read and write from our database, we can also use the authentication to identify the users.  This allows us to preform **analytics** as well as save **security data** in the cloud.  We are also able to **personalize the application experience** with this information to increase application retention.


![fb_rules.jpg](https://steemitimages.com/DQmRtmEoPoEACsn52tYnnSNKZcLapMbB2zge8ghSSEGMuWt/fb_rules.jpg)


This image shows the rules that were used for our **cloud firestore database** in this application.  These **rules** only allow a user to **read and write our data** if the request they make is **authenticated** beforehand.  This rule set is very simple but it can be expanded in different ways for various types of applications. 

##### Item 2: Using OAuth 2.0 Inside of Flutter

One of the larger advantages of using the **Firebase Authentication system** is that it makes use of the **OAuth 2.0 standard**.  This allows us to authenticate our users from a single click.  We also **avoid potential security risks** which come from using a more traditional validation system that actually requires that the user inputs their email and password into our application.  

![fb_static.png](https://steemitimages.com/DQmURUethMGYtDqiZA1JJtnjcLJQaSiPWdQMMGqntVHPZx8/fb_static.png)

This image shows the method that we use to authenticate the user inside of our application.  First, we ask **Google** to authenticate the user by having them sign in to the **Google Playstore** or another **Google application**.  We then are able to get the Authentication Tokens from this sign in event through our `GoogleSignInAuthentication` object.  These tokens are passed into the **FirebaseUser object** which then confirms that the user is indeed who they say they are. The information is then passed back into **firebase** on a **successful authentication**.  

##### Item 3: Using the Singleton Pattern to Fetch Consistent Data

**Firebase Authentication** and the libraries surrounding Firebase all use the **Singleton Pattern**.  This is useful because it allows the application to keep the **same instance of the object** consistent across the entire code base.  In this case, we are able to easily pass the user data from the **API provider** to the **view layer** of our application. 

![streambuilder-2.png](https://steemitimages.com/DQmeFUvwZZUVF2ERUUNEpDtKshs1oFoV8xBRfzRm7UeT5nP/streambuilder-2.png)

Just as we were able to use a **Stream Builder widget** to dynamically change the widget tree in the base application, we are also able to display information about the user to our home screen.  In this case, we are taking the `FirebaseAuth` instance object and calling the `currentUser` method on it to get the currently signed in user.  We are then able to access any piece of information associated with this user in the widget tree below this **Stream Builder**. 


The source code for this project can be found [here](https://github.com/tensor-programming/flutter_fb_google_auth_example)

The Commands and Firebase Rules used in this tutorial can be found [here](https://gist.github.com/tensor-programming/9a5a24874860cfa365b1049d094465d7)

#### Video Tutorial
<iframe width="560" height="315" src="https://www.youtube.com/embed/ZNt_e5ojGzQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

#### Related Videos

- [Using Cloud Firestore as a Realtime Datastore for CRUD with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-cloud-firestore-as-a-realtime-datastore-for-crud-with-dart-s-flutter-framework)

#### Projects and Series
> ##### Stand Alone Projects:
> - [Dart Flutter Cross Platform Chat Application Tutorial](https://steemit.com/@tensor/dart-flutter-cross-platform-chat-application-tutorial)
> - [Building a Temperature Conversion Application using Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-temperature-conversion-application-using-dart-s-flutter-framework)
> - [Managing State with Flutter Flux and Building a Crypto Tracker Application with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/managing-state-with-flutter-flux-and-building-a-crypto-tracker-application-with-dart-s-flutter-framework)
> ##### Building a Calculator
> - [Building a Calculator Layout using Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-calculator-layout-using-dart-s-flutter-framework)
> - [Finishing our Calculator Application with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/finishing-our-calculator-application-with-dart-s-flutter-framework)
> ##### Movie Searcher Application
> - [Building a Movie Searcher with RxDart and SQLite in Dart's Flutter Framework (Part 1)](https://steemit.com/utopian-io/@tensor/building-a-movie-searcher-with-rxdart-and-sqlite-in-dart-s-flutter-framework-part-1)
> - [Building a Movie Searcher with RxDart and SQLite in Dart's Flutter Framework (Part 2)](https://steemit.com/utopian-io/@tensor/building-a-movie-searcher-with-rxdart-and-sqlite-in-dart-s-flutter-framework-part-2)
> - [Building a Movie Searcher with RxDart and SQLite in Dart's Flutter Framework (Part 3, Final)](https://steemit.com/utopian-io/@tensor/building-a-movie-searcher-with-rxdart-and-sqlite-in-dart-s-flutter-framework-part-3-final)
> #### Minesweeper Game
> - [Building a Mine Sweeper Game using Dart's Flutter Framework (Part 1)](https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-1)
> - [Building a Mine Sweeper Game using Dart's Flutter Framework (Part 2)](https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-2)
> - [Building a Mine Sweeper Game using Dart's Flutter Framework (Part 3)](https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-3)
> - [Building a Mine Sweeper Game using Dart's Flutter Framework (Part 4, Final)](https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-4-final)
> #### Weather Application
> - [Building a Weather Application with Dart's Flutter Framework (Part 1, Handling Complex JSON with Built Code Generation)](https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-1-handling-complex-json-with-built-code-generation)
> - [Building a Weather Application with Dart's Flutter Framework (Part 2, Creating a Repository and Model)](https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-2-creating-a-repository-and-model)
> - [Building a Weather Application with Dart's Flutter Framework (Part 3, RxCommand (RxDart) and Adding an Inherited Widget)](https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-3-rxcommand-rxdart-and-adding-an-inherited-widget)
> - [Building a Weather Application with Dart's Flutter Framework (Part 4, Using RxWidget to Build a Reactive User Interface)](https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-4-using-rxwidget-to-build-a-reactive-user-interface)
> - [Localize and Internationalize Applications with Intl and the Flutter SDK in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/localize-and-internationalize-applications-with-intl-and-the-flutter-sdk-in-dart-s-flutter-framework)

#### Curriculum

- [Building a Multi-Page Application with Dart's Flutter Mobile Framework](https://steemit.com/utopian-io/@tensor/building-a-multi-page-application-with-dart-s-flutter-mobile-framework)    
- [Making Http requests and Using Json in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/making-http-requests-and-using-json-in-dart-s-flutter-framework)
- [Building Dynamic Lists with Streams in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-dynamic-lists-with-streams-in-dart-s-flutter-framework)
- [Using GridView, Tabs, and Steppers in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-gridview-tabs-and-steppers-in-dart-s-flutter-framework)
- [Using Global Keys to get State and Validate Input in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-global-keys-to-get-state-and-validate-input-in-dart-s-flutter-framework)
- [The Basics of Animation with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/the-basics-of-animation-with-dart-s-flutter-framework)
- [Advanced Physics Based Animations in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/advanced-physics-based-animations-in-dart-s-flutter-framework)
- [Building a Drag and Drop Application with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-drag-and-drop-application-with-dart-s-flutter-framework)
- [Building a Hero Animation and an Application Drawer in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-hero-animation-and-an-application-drawer-in-dart-s-flutter-framework)
- [Using Inherited Widgets and Gesture Detectors in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-inherited-widgets-and-gesture-detectors-in-dart-s-flutter-framework)
- [Using Gradients, Fractional Offsets, Page Views and Other Widgets in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-gradients-fractional-offsets-page-views-and-other-widgets-in-dart-s-flutter-framework)
- [Making use of Shared Preferences, Flex Widgets and Dismissibles with Dart's Flutter framework](https://steemit.com/utopian-io/@tensor/making-use-of-shared-preferences-flex-widgets-and-dismissibles-with-dart-s-flutter-framework)
- [Using the Different Style Widgets and Properties in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-the-different-style-widgets-and-properties-in-dart-s-flutter-framework)
- [Composing Animations and Chaining Animations in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/composing-animations-and-chaining-animations-in-dart-s-flutter-framework)
- [Building a Countdown Timer with a Custom Painter and Animations in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-countdown-timer-with-a-custom-painter-and-animations-in-dart-s-flutter-framework)
- [Reading and Writing Data and Files with Path Provider using Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/reading-and-writing-data-and-files-with-path-provider-using-dart-s-flutter-framework)
- [Exploring Webviews and the Url Launcher Plugin in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/exploring-webviews-and-the-url-launcher-plugin-in-dart-s-flutter-framework)
- [Adding a Real-time Database to a Flutter application with Firebase](https://steemit.com/utopian-io/@tensor/adding-a-real-time-database-to-a-flutter-application-with-firebase)
- [Building a List in Redux with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-list-in-redux-with-dart-s-flutter-framework)
- [Managing State with the Scoped Model Pattern in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/managing-state-with-the-scoped-model-pattern-in-dart-s-flutter-framework)
- [Authenticating Guest Users for Firebase using Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/authenticating-guest-users-for-firebase-using-dart-s-flutter-framework)
- [How to Monetize Your Flutter Applications Using Admob](https://steemit.com/utopian-io/@tensor/how-to-monetize-your-flutter-applications-using-admob)
- [Using Geolocator to Communicate with the GPS and Build a Map in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-geolocator-to-communicate-with-the-gps-and-build-a-map-in-dart-s-flutter-framework)
- [Managing the App Life Cycle and the Screen Orientation in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/managing-the-app-life-cycle-and-the-screen-orientation-in-dart-s-flutter-framework)
- [Making use of General Utility Libraries for Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/making-use-of-general-utility-libraries-for-dart-s-flutter-framework)
- [Interfacing with Websockets and Streams in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/interfacing-with-websockets-and-streams-in-dart-s-flutter-framework)
- [Playing Local, Network and YouTube Videos with the Video Player Plugin in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/playing-local-network-and-youtube-videos-with-the-video-player-plugin-in-dart-s-flutter-framework)
- [Building Custom Scroll Physics and Simulations with Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-custom-scroll-physics-and-simulations-with-dart-s-flutter-framework)
- [Making Dynamic Layouts with Slivers in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/making-dynamic-layouts-with-slivers-in-dart-s-flutter-framework)
- [Building a Sketch Application by using Custom Painters in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/building-a-sketch-application-by-using-custom-painters-in-dart-s-flutter-framework)
- [Using Dart Isolates, Dependency Injection and Future Builders in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/using-dart-isolates-dependency-injection-and-future-builders-in-dart-s-flutter-framework)
- [Looking at the Main Features of the Beta Three Release of Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/looking-at-the-main-features-of-the-beta-three-release-of-dart-s-flutter-framework)
- [Working with Material Theme and Custom Fonts in Dart's Flutter Framework](https://steemit.com/utopian-io/@tensor/working-with-material-theme-and-custom-fonts-in-dart-s-flutter-framework)



#### Proof of Work Done
https://github.com/tensor-programming
πŸ‘  , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id48,592,325
authortensor
permlinkauthenticating-users-with-google-sign-in-and-firebase-firestore-inside-of-dart-s-flutter-framework
categoryutopian-io
json_metadata"{"links": ["https://github.com/flutter/flutter", "https://www.jetbrains.com/idea/", "https://code.visualstudio.com/", "https://github.com/flutter/flutter-intellij", "https://developer.android.com/studio/index.html", "https://developer.apple.com/xcode/", "https://flutter.io/get-started/install/", "https://flutter.io/", "https://flutter.io/docs/", "https://github.com/flutter/flutter/wiki/Trying-the-preview-of-Dart-2-in-Flutter", "https://flutter.io/technical-overview/", "https://www.dartlang.org/", "https://github.com/Solido/awesome-flutter", "https://github.com/tensor-programming/flutter_fb_google_auth_example", "https://gist.github.com/tensor-programming/9a5a24874860cfa365b1049d094465d7", "https://www.youtube.com/embed/ZNt_e5ojGzQ", "https://steemit.com/utopian-io/@tensor/using-cloud-firestore-as-a-realtime-datastore-for-crud-with-dart-s-flutter-framework", "https://steemit.com/@tensor/dart-flutter-cross-platform-chat-application-tutorial", "https://steemit.com/utopian-io/@tensor/building-a-temperature-conversion-application-using-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/managing-state-with-flutter-flux-and-building-a-crypto-tracker-application-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-calculator-layout-using-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/finishing-our-calculator-application-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-movie-searcher-with-rxdart-and-sqlite-in-dart-s-flutter-framework-part-1", "https://steemit.com/utopian-io/@tensor/building-a-movie-searcher-with-rxdart-and-sqlite-in-dart-s-flutter-framework-part-2", "https://steemit.com/utopian-io/@tensor/building-a-movie-searcher-with-rxdart-and-sqlite-in-dart-s-flutter-framework-part-3-final", "https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-1", "https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-2", "https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-3", "https://steemit.com/utopian-io/@tensor/building-a-mine-sweeper-game-using-dart-s-flutter-framework-part-4-final", "https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-1-handling-complex-json-with-built-code-generation", "https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-2-creating-a-repository-and-model", "https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-3-rxcommand-rxdart-and-adding-an-inherited-widget", "https://steemit.com/utopian-io/@tensor/building-a-weather-application-with-dart-s-flutter-framework-part-4-using-rxwidget-to-build-a-reactive-user-interface", "https://steemit.com/utopian-io/@tensor/localize-and-internationalize-applications-with-intl-and-the-flutter-sdk-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-multi-page-application-with-dart-s-flutter-mobile-framework", "https://steemit.com/utopian-io/@tensor/making-http-requests-and-using-json-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-dynamic-lists-with-streams-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/using-gridview-tabs-and-steppers-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/using-global-keys-to-get-state-and-validate-input-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/the-basics-of-animation-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/advanced-physics-based-animations-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-drag-and-drop-application-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-hero-animation-and-an-application-drawer-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/using-inherited-widgets-and-gesture-detectors-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/using-gradients-fractional-offsets-page-views-and-other-widgets-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/making-use-of-shared-preferences-flex-widgets-and-dismissibles-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/using-the-different-style-widgets-and-properties-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/composing-animations-and-chaining-animations-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-countdown-timer-with-a-custom-painter-and-animations-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/reading-and-writing-data-and-files-with-path-provider-using-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/exploring-webviews-and-the-url-launcher-plugin-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/adding-a-real-time-database-to-a-flutter-application-with-firebase", "https://steemit.com/utopian-io/@tensor/building-a-list-in-redux-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/managing-state-with-the-scoped-model-pattern-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/authenticating-guest-users-for-firebase-using-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/how-to-monetize-your-flutter-applications-using-admob", "https://steemit.com/utopian-io/@tensor/using-geolocator-to-communicate-with-the-gps-and-build-a-map-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/managing-the-app-life-cycle-and-the-screen-orientation-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/making-use-of-general-utility-libraries-for-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/interfacing-with-websockets-and-streams-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/playing-local-network-and-youtube-videos-with-the-video-player-plugin-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-custom-scroll-physics-and-simulations-with-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/making-dynamic-layouts-with-slivers-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/building-a-sketch-application-by-using-custom-painters-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/using-dart-isolates-dependency-injection-and-future-builders-in-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/looking-at-the-main-features-of-the-beta-three-release-of-dart-s-flutter-framework", "https://steemit.com/utopian-io/@tensor/working-with-material-theme-and-custom-fonts-in-dart-s-flutter-framework", "https://github.com/tensor-programming"], "format": "markdown", "app": "steemit/0.1", "image": ["https://steemitimages.com/DQmbFAKjCq1GWcT8qxs3NWXo5zJywJcVv9Eec35euxMs41F/flutter-logo.jpg"], "tags": ["utopian-io", "video-tutorials", "steemstem", "steemiteducation", "technology"]}"
created2018-05-15 02:23:00
last_update2018-05-15 02:25:54
depth0
children5
net_rshares26,449,372,345,272
last_payout2018-05-22 02:23:00
cashout_time1969-12-31 23:59:59
total_payout_value99.424 SBD
curator_payout_value30.640 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length16,905
author_reputation87,767,420,253,600
root_title"Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (30)
@qurator-tier-0 ·
<div class="pull-left"><img src="![Qsmall.png](https://steemitimages.com/DQmcWoZUnPrRW1UdZeVPWhHpnXfkgWAdFHGxMrSgZoxSZw8/Qsmall.png)" /></div>
		
<center>You just received a Tier 0 upvote!  Looking for bigger rewards? Click [here](https://steemit.com/qurator/@qurator/qurator-tier-changes) and learn how to get them or visit us on [Discord](https://discord.gg/nhQehdv)</center>
properties (22)
post_id48,594,313
authorqurator-tier-0
permlinkre-authenticating-users-with-google-sign-in-and-firebase-firestore-inside-of-dart-s-flutter-framework-20180515t024206
categoryutopian-io
json_metadata{}
created2018-05-15 02:42:06
last_update2018-05-15 02:42:06
depth1
children1
net_rshares0
last_payout2018-05-22 02:42:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length377
author_reputation59,338,058,627
root_title"Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@tensor ·
Here we go again...
properties (22)
post_id48,600,454
authortensor
permlinkre-qurator-tier-0-re-authenticating-users-with-google-sign-in-and-firebase-firestore-inside-of-dart-s-flutter-framework-20180515t024206-20180515t033820116z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "tags": ["utopian-io"]}"
created2018-05-15 03:38:21
last_update2018-05-15 03:38:21
depth2
children0
net_rshares0
last_payout2018-05-22 03:38:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length19
author_reputation87,767,420,253,600
root_title"Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@rosatravels ·
$0.08
Your contribution has been evaluated according to [Utopian rules and guidelines](https://utopian.io/rules), as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post,[Click here](https://review.utopian.io/result/9/112221122)


Great work @tensor.


---- 
Need help? Write a ticket on https://support.utopian.io/. 
Chat with us on [Discord](https://discord.gg/uTyJkNm). 
[[utopian-moderator]](https://join.utopian.io/)
πŸ‘  
properties (23)
post_id48,628,025
authorrosatravels
permlinkre-tensor-authenticating-users-with-google-sign-in-and-firebase-firestore-inside-of-dart-s-flutter-framework-20180515t080006889z
categoryutopian-io
json_metadata"{"links": ["https://utopian.io/rules", "https://review.utopian.io/result/9/112221122", "https://support.utopian.io/", "https://discord.gg/uTyJkNm", "https://join.utopian.io/"], "app": "steemit/0.1", "users": ["tensor"], "tags": ["utopian-io"]}"
created2018-05-15 08:00:12
last_update2018-05-15 08:00:12
depth1
children1
net_rshares17,667,938,351
last_payout2018-05-22 08:00:12
cashout_time1969-12-31 23:59:59
total_payout_value0.063 SBD
curator_payout_value0.021 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length499
author_reputation446,683,592,150,961
root_title"Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@tensor ·
As always, thank you for moderating my contribution.
properties (22)
post_id48,646,185
authortensor
permlinkre-rosatravels-re-tensor-authenticating-users-with-google-sign-in-and-firebase-firestore-inside-of-dart-s-flutter-framework-20180515t104445238z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "tags": ["utopian-io"]}"
created2018-05-15 10:44:45
last_update2018-05-15 10:44:45
depth2
children0
net_rshares0
last_payout2018-05-22 10:44:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length52
author_reputation87,767,420,253,600
root_title"Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@utopian-io ·
$0.08
Hey @tensor
**Thanks for contributing on Utopian**.
We’re already looking forward to your next contribution!

**Contributing on Utopian**
Learn how to contribute on <a href='https://join.utopian.io'>our website</a> or by watching <a href='https://www.youtube.com/watch?v=8S1AtrzYY1Q'>this tutorial</a> on Youtube.

**Want to chat? Join us on Discord https://discord.gg/h52nFrV.**

<a href='https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1'>Vote for Utopian Witness!</a>
πŸ‘  
properties (23)
post_id48,628,526
authorutopian-io
permlinkre-authenticating-users-with-google-sign-in-and-firebase-firestore-inside-of-dart-s-flutter-framework-20180515t080505z
categoryutopian-io
json_metadata"{"app": "beem/0.19.29"}"
created2018-05-15 08:05:06
last_update2018-05-15 08:05:06
depth1
children0
net_rshares17,346,703,108
last_payout2018-05-22 08:05:06
cashout_time1969-12-31 23:59:59
total_payout_value0.063 SBD
curator_payout_value0.021 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length503
author_reputation152,913,012,544,965
root_title"Authenticating Users with Google Sign In and Firebase\Firestore inside of Dart's Flutter Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)