From bc957f5742c0f1681200adfef22d1d9df01f5a28 Mon Sep 17 00:00:00 2001 From: fdp <1286779656@qq.com> Date: Sat, 29 Mar 2025 11:46:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9facebook&google=E7=99=BB?= =?UTF-8?q?=E9=99=86token=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../login/controllers/facebookLogin.dart | 154 ++++++++++-------- .../login/controllers/login_controller.dart | 6 +- 2 files changed, 91 insertions(+), 69 deletions(-) diff --git a/lib/modules/login/controllers/facebookLogin.dart b/lib/modules/login/controllers/facebookLogin.dart index 61e17a4a8..59e701faf 100644 --- a/lib/modules/login/controllers/facebookLogin.dart +++ b/lib/modules/login/controllers/facebookLogin.dart @@ -10,7 +10,7 @@ import 'package:get/get.dart'; import 'package:crypto/crypto.dart'; class Facebook { - String token = ''; + String? token = ''; String name = ''; String email = ''; @@ -31,79 +31,101 @@ class Facebook { return digest.toString(); } - // FaceBook登录 - // 修改后的 signInWithFacebook Future signInWithFacebook() async { try { - final rawNonce = generateNonce(); - final nonce = sha256ofString(rawNonce); - final LoginResult loginResult = await FacebookAuth.instance - .login( - loginTracking: LoginTracking.enabled, - nonce: nonce, - ) - .catchError((onError) { - if (kDebugMode) { - //print(onError); - } - throw Exception(onError.message); - }); - if (loginResult.accessToken == null) { - throw Exception(loginResult.message); - } - // Create a credential from the access token - OAuthCredential facebookAuthCredential; - - print("tokenType${loginResult.accessToken!.type}"); - - if (Platform.isIOS) { - // Create a credential from the access token - switch (loginResult.accessToken!.type) { - case AccessTokenType.classic: - final classicToken = loginResult.accessToken as ClassicToken; - token = classicToken.tokenString; - print('Token 字符串: ${classicToken.tokenString}'); - print('classicToken值: ${classicToken}'); - facebookAuthCredential = FacebookAuthProvider.credential( - classicToken.authenticationToken!, - ); - break; - case AccessTokenType.limited: - final limitedToken = loginResult.accessToken as LimitedToken; - token = limitedToken.tokenString; - print('Token 字符串: ${limitedToken.tokenString}'); - print('LimitedToken值: ${limitedToken}'); - facebookAuthCredential = OAuthCredential( - providerId: 'facebook.com', - signInMethod: 'oauth', - idToken: limitedToken.tokenString, - rawNonce: rawNonce, - ); - break; - } + UserCredential userCredential = await loginFacebook(); + //UserCredential userCredential = await loginGoogle(); + token = await userCredential.user?.getIdToken(); + print('facebook响应数据userCredential: $token'); + if (token != "") { + return true; } else { - facebookAuthCredential = FacebookAuthProvider.credential( - loginResult.accessToken!.tokenString, - ); - token = loginResult.accessToken!.tokenString; + return false; } - print('facebookAuthCredential值: ${facebookAuthCredential}'); - if (facebookAuthCredential == null) { - throw Exception("Facebook Login Fail."); + } catch (e) { + print(e); + return false; + } + } + + // FaceBook登录 + // 修改后的 signInWithFacebook + Future loginFacebook() async { + //try { + final rawNonce = generateNonce(); + final nonce = sha256ofString(rawNonce); + final LoginResult loginResult = await FacebookAuth.instance + .login( + loginTracking: LoginTracking.enabled, + nonce: nonce, + ) + .catchError((onError) { + if (kDebugMode) { + //print(onError); } - final userData = await FacebookAuth.instance.getUserData(); - name = userData["name"].toString(); + throw Exception(onError.message); + }); + if (loginResult.accessToken == null) { + throw Exception(loginResult.message); + } + // Create a credential from the access token + OAuthCredential facebookAuthCredential; - email = userData["email"].toString(); - pictureurl = userData["picture"]["data"]["url"].toString(); - id = userData["id"].toString(); - print("user login facebook ${email}${pictureurl}${name}${id}"); + print("tokenType${loginResult.accessToken!.type}"); - return true; - } catch (e) { - print("Facebook 登录异常:$e"); - return false; + if (Platform.isIOS) { + // Create a credential from the access token + switch (loginResult.accessToken!.type) { + case AccessTokenType.classic: + final classicToken = loginResult.accessToken as ClassicToken; + // token = classicToken.tokenString; + print('Token 字符串: ${classicToken.tokenString}'); + print('classicToken值: ${classicToken}'); + facebookAuthCredential = FacebookAuthProvider.credential( + classicToken.authenticationToken!, + ); + break; + case AccessTokenType.limited: + final limitedToken = loginResult.accessToken as LimitedToken; + //token = limitedToken.tokenString; + print('Token 字符串: ${limitedToken.tokenString}'); + print('LimitedToken值: ${limitedToken}'); + facebookAuthCredential = OAuthCredential( + providerId: 'facebook.com', + signInMethod: 'oauth', + idToken: limitedToken.tokenString, + rawNonce: rawNonce, + ); + break; + } + } else { + facebookAuthCredential = FacebookAuthProvider.credential( + loginResult.accessToken!.tokenString, + ); + //token = loginResult.accessToken!.tokenString; + } + print('facebookAuthCredential值: ${facebookAuthCredential}'); + if (facebookAuthCredential == null) { + throw Exception("Facebook Login Fail."); } + final userData = await FacebookAuth.instance.getUserData(); + name = userData["name"].toString(); + + email = userData["email"].toString(); + pictureurl = userData["picture"]["data"]["url"].toString(); + id = userData["id"].toString(); + print("user login facebook ${email}${pictureurl}${name}${id}"); + return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential); + + // final User? user = userCredential.user; // 获取用户信息 + // token = await userCredential.user?.getIdToken(); + // print("irebaseAuth.instance.signInWithCredential ${token}"); + + // return true; + // } catch (e) { + // print("Facebook 登录异常:$e"); + // return false; + // } } // 退出Google登录 diff --git a/lib/modules/login/controllers/login_controller.dart b/lib/modules/login/controllers/login_controller.dart index f3057192e..d3f8b31f4 100644 --- a/lib/modules/login/controllers/login_controller.dart +++ b/lib/modules/login/controllers/login_controller.dart @@ -377,7 +377,7 @@ class LoginController extends GetxController { print("数据获取Facebook"); final facebook = Facebook(); bool authResult = await facebook.signInWithFacebook(); - print("数据获取Facebook().token${authResult}"); + if (authResult) { print("数据获取_Facebook.token${facebook.token}"); print("数据获取_Facebook.pictureurl${facebook.pictureurl}"); @@ -391,7 +391,7 @@ class LoginController extends GetxController { requestLogin({ "mail": facebook.email, "phone": "", - "stype": loginType, + "stype": 5, "vcode": "", "ttoken": facebook.token, "phonemodel": "", @@ -420,7 +420,7 @@ class LoginController extends GetxController { requestLogin({ "mail": google.email, "phone": "", - "stype": loginType, + "stype": 5, "vcode": "", "ttoken": google.token, "phonemodel": "", From 4f8889c3a65ab92bb292c5fff91c2f00a3610285 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Sat, 29 Mar 2025 14:25:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=BC=95=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/modules/home/bindings/home_binding.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/modules/home/bindings/home_binding.dart b/lib/modules/home/bindings/home_binding.dart index 9a67dfcc4..bf9d2b3f2 100644 --- a/lib/modules/home/bindings/home_binding.dart +++ b/lib/modules/home/bindings/home_binding.dart @@ -1,11 +1,12 @@ -import 'package:deep_voice/modules/explore/controllers/explore_controller.dart'; import 'package:get/get.dart'; +import '../../explore/controllers/explore_controller.dart'; import '../controllers/home_controller.dart'; class HomeBinding extends Bindings { @override void dependencies() { Get.lazyPut(() => HomeController()); - Get.lazyPut(()=>ExploreController());// 注册ExploreController + Get.lazyPut( + () => ExploreController()); // 注册ExploreController } -} \ No newline at end of file +}