From d90596cad7c4e81993acb280e92212c025b8f87e Mon Sep 17 00:00:00 2001 From: Rajshinde046 Date: Tue, 18 Jun 2024 15:33:57 +0530 Subject: [PATCH] google --- ios/Runner.xcodeproj/project.pbxproj | 38 ++--- ios/Runner/GoogleService-Info.plist | 4 + lib/firebase_options.dart | 4 +- lib/view/login/LoginScreen.dart | 185 +++++++++++++++++------ lib/view_model/GoogleApi/google_api.dart | 30 ++++ pubspec.lock | 82 +++++++++- pubspec.yaml | 2 + 7 files changed, 274 insertions(+), 71 deletions(-) create mode 100644 lib/view_model/GoogleApi/google_api.dart diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 052bd1b..49b8472 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -142,8 +142,8 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 0B649054ED34D466116A76B4 /* [CP] Embed Pods Frameworks */, - AEB6A3F5C2646ACD5FD07AD4 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, 3991F7BB322D4A93148EBA5F /* [CP] Copy Pods Resources */, + 2A6497560A75576FDBB7BFE8 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, ); buildRules = ( ); @@ -220,6 +220,24 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 2A6497560A75576FDBB7BFE8 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\""; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n"; + }; 3991F7BB322D4A93148EBA5F /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -268,24 +286,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AEB6A3F5C2646ACD5FD07AD4 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\""; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n"; - }; F8F084BCF7BD9B22A56A9676 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist index 344b7fe..b0df3e0 100644 --- a/ios/Runner/GoogleService-Info.plist +++ b/ios/Runner/GoogleService-Info.plist @@ -2,6 +2,10 @@ + CLIENT_ID + 307701736370-il62k6tumpu03hnaiqkefj44494bvae6.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.307701736370-il62k6tumpu03hnaiqkefj44494bvae6 API_KEY AIzaSyAX1quOawuuZYT8WuHjLNnfk_e6e6hdt-U GCM_SENDER_ID diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart index d9e7c0a..a263dd9 100644 --- a/lib/firebase_options.dart +++ b/lib/firebase_options.dart @@ -63,6 +63,8 @@ class DefaultFirebaseOptions { messagingSenderId: '307701736370', projectId: 'traders-circuit', storageBucket: 'traders-circuit.appspot.com', + iosClientId: '307701736370-il62k6tumpu03hnaiqkefj44494bvae6.apps.googleusercontent.com', iosBundleId: 'com.example.traderscircuit', ); -} + +} \ No newline at end of file diff --git a/lib/view/login/LoginScreen.dart b/lib/view/login/LoginScreen.dart index ad440ea..a56e976 100644 --- a/lib/view/login/LoginScreen.dart +++ b/lib/view/login/LoginScreen.dart @@ -2,16 +2,21 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:glassmorphism/glassmorphism.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:onesignal_flutter/onesignal_flutter.dart'; import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart'; import 'package:traderscircuit/Utils/Common/commonBotton.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; import 'package:traderscircuit/Utils/text.dart'; import 'package:traderscircuit/Utils/utils.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; +import 'package:traderscircuit/view_model/GoogleApi/google_api.dart'; import '../../view_model/SendOtp/sendOtpObserver.dart'; import '../../view_model/SendOtp/sendOtpbloc.dart'; @@ -31,6 +36,89 @@ class _LoginScreenState extends State { return !phoneNumberExpression.hasMatch(phoneNumber); } + _signInWithGooglecheck() async { + // try { + final GoogleSignIn googleSignIn = GoogleSignIn(); + await googleSignIn.signOut(); + final GoogleSignInAccount? googleUser = await googleSignIn.signIn(); + if (googleUser == null) { + return; + } + final GoogleSignInAuthentication googleAuth = + await googleUser.authentication; + + print('googleAuth AccessToken ${googleAuth.accessToken}'); + + // Show loading dialog + showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return Center( + child: CircularProgressIndicator( + color: Colors.white, + ), + ); + }, + ); + + // final status = await OneSignal.shared.getDeviceState(); + // final String? playerIdV = status?.userId; + // Map updata = { + // "principal_source_xid": '3', + // "access_token": '${googleAuth.accessToken}', + // "player_id": playerIdV!, + // }; + // // Call Google API + // final data = await GoogleAPI(updata).googleApi(); + + // // Dismiss loading dialog + // Navigator.of(context).pop(); + + // if (data.status == ResponseStatus.SUCCESS) { + // // await global.setname(); + // // await global.getVar(); + + // Get.snackbar( + // "Success!", + // 'Google Sign In successful!', + // duration: Duration(seconds: 2), + // colorText: Colors.white, + // backgroundColor: Colors.green, + // margin: EdgeInsets.all(8), + // snackStyle: SnackStyle.FLOATING, + // snackPosition: SnackPosition.BOTTOM, + // ); + + // Get.toNamed(RouteName.adddetails); + // } else { + // // Show an error message + // Get.snackbar( + // "Error!", + // data.message, + // duration: Duration(seconds: 2), + // colorText: Colors.white, + // backgroundColor: Colors.red, + // margin: EdgeInsets.all(8), + // snackStyle: SnackStyle.FLOATING, + // snackPosition: SnackPosition.BOTTOM, + // ); + // } + // } catch (e) { + // print("Error during Google sign-in and API call: $e"); + // Get.snackbar( + // "Error!", + // 'Something went wrong, please try again!', + // duration: Duration(seconds: 2), + // colorText: Colors.white, + // backgroundColor: Colors.red, + // margin: EdgeInsets.all(8), + // snackStyle: SnackStyle.FLOATING, + // snackPosition: SnackPosition.BOTTOM, + // ); + // } + } + @override Widget build(BuildContext context) { // final CounterBloc counterbloc = BlocProvider.of(context); @@ -353,52 +441,57 @@ class _LoginScreenState extends State { SizedBox( height: 15.h, ), - GlassmorphicContainer( - width: double.infinity, - height: 55.h, - borderRadius: 8, - linearGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xFFffffff).withOpacity(0.1), - const Color(0xFFFFFFFF).withOpacity(0.05), - ], - stops: const [ - 0.1, - 1, - ]), - border: 0.5, - blur: 10, - borderGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - const Color(0xff4A73FB).withOpacity(0.2), - const Color(0xff4A73FB).withOpacity(0.2), - const Color(0xff4A73FB).withOpacity(0.2), - ], - stops: const [ - 0.3, - 0.6, - 1, - ]), - child: Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - "assets/images/png/google.png", - height: 30.h, - width: 30.w, - ), - SizedBox( - width: 7.h, - ), - text16W400( - "Continue with google", - ), - ], + GestureDetector( + onTap: () { + _signInWithGooglecheck(); + }, + child: GlassmorphicContainer( + width: double.infinity, + height: 55.h, + borderRadius: 8, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFffffff).withOpacity(0.1), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: const [ + 0.1, + 1, + ]), + border: 0.5, + blur: 10, + borderGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xff4A73FB).withOpacity(0.2), + const Color(0xff4A73FB).withOpacity(0.2), + const Color(0xff4A73FB).withOpacity(0.2), + ], + stops: const [ + 0.3, + 0.6, + 1, + ]), + child: Center( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + "assets/images/png/google.png", + height: 30.h, + width: 30.w, + ), + SizedBox( + width: 7.h, + ), + text16W400( + "Continue with google", + ), + ], + ), ), ), ), diff --git a/lib/view_model/GoogleApi/google_api.dart b/lib/view_model/GoogleApi/google_api.dart new file mode 100644 index 0000000..8785d81 --- /dev/null +++ b/lib/view_model/GoogleApi/google_api.dart @@ -0,0 +1,30 @@ +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:traderscircuit/Utils/base_manager.dart'; +import 'package:traderscircuit/data/network/network_api_services.dart'; + +class GoogleAPI { + GoogleAPI(this.data); + var data; + Future> googleApi() async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + final response = await NetworkApiServices().postApi( + data, + "auth/google-signin/", + ); + + if (response.status == ResponseStatus.SUCCESS) { + //Map responseData = jsonDecode(response.data); + if (response.data['success'] == true) { + // await prefs.setString('token', response.data["data"]["access"]); + // await prefs.setString('refreshToken', response.data["data"]["refresh"]); + // await prefs.setBool('hasSignedInBefore', response.data["data"]["complete"]); + print('signup: ${prefs.getString('token')}'); + } else { + return ResponseData( + response.data['message'], ResponseStatus.FAILED); + } + } + + return response; + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 0317477..08dba9f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: "4eec93681221723a686ad580c2e7d960e1017cf1a4e0a263c2573c2c6b0bf5cd" + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" url: "https://pub.dev" source: hosted - version: "1.3.25" + version: "1.3.35" another_flushbar: dependency: transitive description: @@ -337,14 +337,38 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.5+21" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + sha256: cfc2d970829202eca09e2896f0a5aa7c87302817ecc0bdfa954f026046bf10ba + url: "https://pub.dev" + source: hosted + version: "4.20.0" + firebase_auth_platform_interface: + dependency: transitive + description: + name: firebase_auth_platform_interface + sha256: a0270e1db3b2098a14cb2a2342b3cd2e7e458e0c391b1f64f6f78b14296ec093 + url: "https://pub.dev" + source: hosted + version: "7.3.0" + firebase_auth_web: + dependency: transitive + description: + name: firebase_auth_web + sha256: "64e067e763c6378b7e774e872f0f59f6812885e43020e25cde08f42e9459837b" + url: "https://pub.dev" + source: hosted + version: "5.12.0" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "53316975310c8af75a96e365f9fccb67d1c544ef0acdbf0d88bbe30eedd1c4f9" + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" url: "https://pub.dev" source: hosted - version: "2.27.0" + version: "2.32.0" firebase_core_platform_interface: dependency: transitive description: @@ -568,6 +592,54 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" + url: "https://pub.dev" + source: hosted + version: "0.3.1+1" + google_sign_in: + dependency: "direct main" + description: + name: google_sign_in + sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f" + url: "https://pub.dev" + source: hosted + version: "6.2.1" + google_sign_in_android: + dependency: transitive + description: + name: google_sign_in_android + sha256: "7647893c65e6720973f0e579051c8f84b877b486614d9f70a404259c41a4632e" + url: "https://pub.dev" + source: hosted + version: "6.1.23" + google_sign_in_ios: + dependency: transitive + description: + name: google_sign_in_ios + sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe + url: "https://pub.dev" + source: hosted + version: "5.7.6" + google_sign_in_platform_interface: + dependency: transitive + description: + name: google_sign_in_platform_interface + sha256: "1f6e5787d7a120cc0359ddf315c92309069171306242e181c09472d1b00a2971" + url: "https://pub.dev" + source: hosted + version: "2.4.5" + google_sign_in_web: + dependency: transitive + description: + name: google_sign_in_web + sha256: fc0f14ed45ea616a6cfb4d1c7534c2221b7092cc4f29a709f0c3053cc3e821bd + url: "https://pub.dev" + source: hosted + version: "0.12.4" html: dependency: transitive description: @@ -1568,4 +1640,4 @@ packages: version: "6.3.0" sdks: dart: ">=3.3.0 <4.0.0" - flutter: ">=3.16.0" + flutter: ">=3.19.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8660521..64f4de3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,6 +63,8 @@ dependencies: flutter_branch_sdk: ^7.1.0 socket_io_client: ^2.0.3+1 web_socket_channel: ^3.0.0 + google_sign_in: ^6.2.1 + firebase_auth: ^4.20.0 dev_dependencies: