This demo will show us how to authenticate a user by using google.
Use latest versions of below mentioned plugins in pubspec.yaml.
| Plugin | Pub | Explanation |
|---|---|---|
| connectivity | Used to check internet connectivity. | |
| google_sign_in | Used to authenticate user using google. | |
| shared_preferences | Used to store data locally in key-value pairs. | |
| fluttertoast | Used to show toast. |
And then
flutter pub get Visit Firebase Console to add new project. Add Android and iOS app to that project. Add google-services.json and GoogleService-Info.plist for Android and iOS respetively to its predefined place in flutter project.
Now enable Google Sign-in method (second tab) in Authentication.
You can also get this steps in Firebase docs for Android and iOS.
<uses-permission android:name="android.permission.INTERNET" /> Please mention internet permission in AndroidManifest.xml. This will not affect in debug mode but in release mode it will give socket exception.
Add SHA-1 in firebase app
1. Open app in Android Studio 2. Open Gradle panel 3. Goto andoid -> app -> Tasks -> android 4. Double click on signingReport, it will generate SHA-1 Add below line in android/build.gradle
buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:4.3.2' } } Add below line in app/build.gradle
apply plugin: 'com.android.application' android { // ... } dependencies { // ... } // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services' Follow the steps in google_sign_in library
Add Firebase core JS SDK
<script src="https://www.gstatic.com/firebasejs/7.14.3/firebase-app.js"></script> Add Firebase Auth and Analytics JS for google sign-in
<script src="https://www.gstatic.com/firebasejs/7.14.3/firebase-auth.js"></script> <script src="https://www.gstatic.com/firebasejs/8.0.0/firebase-analytics.js"></script> Initialize Firebase with configuration
<script> var firebaseConfig = { // ... your web apps configuration. This is available in your Firebase project settings. }; // Initialize Firebase firebase.initializeApp(firebaseConfig); firebase.analytics(); </script> Add your web apps client id
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com"> Replace YOUR_CLIENT_ID with client id you get from Firebase console
Select Project -> Authentication -> Sign-in method -> Google -> Web SDK configuration -> Web client ID Whitelist the origin of your project's client ID at Google Console
Credentials -> OAuth 2.0 Client IDs Click on Web Client Add http://localhost:7357 in URIs in Authorized JavaScript origin Add http://localhost:7357/auth/google/callback in URIs in Authorized redirect URIs 7357 is port number
Make sure you disable all ad blocker.
static Future<bool> checkInternet() async { var connectivityResult = await (Connectivity().checkConnectivity()); if (connectivityResult == ConnectivityResult.none) { return false; } else { return true; } } GoogleSignIn().signIn(); GoogleSignIn().signOut(); Finally for android and ios
flutter run for web
flutter run -d chrome --web-hostname localhost --web-port 7357 Checkout this demo in Flutter Web.

