我正尝试使用Google登录我的项目,该应用程序完全可以正常运行,但是当我单击Google登录时,只要打开Google帐户,然后单击它们就不会登录,丢给我一个错误。
这是我的代码:
final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
SharedPreferences prefs;
bool isLoading = false;
bool isLoggedIn = false;
FirebaseUser currentUser;
@override
void initState() {
super.initState();
isSignedIn();
}
void isSignedIn() async {
this.setState(() {
isLoading = true;
});
prefs = await SharedPreferences.getInstance();
isLoggedIn = await _googleSignIn.isSignedIn();
if (isLoggedIn) {
Navigator.push(
context, MaterialPageRoute(builder: (context) => HomePage()));
}
this.setState(() {
isLoading = false;
});
}
Future<FirebaseUser> _handleSignIn() async {
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final FirebaseUser firebaseUser =
(await firebaseAuth.signInWithCredential(credential)).user;
print("signed in " + firebaseUser.displayName);
if (firebaseUser != null) {
// Check is already sign up
final QuerySnapshot result = await Firestore.instance
.collection('users')
.where('id', isEqualTo: firebaseUser.uid)
.getDocuments();
final List<DocumentSnapshot> documents = result.documents;
if (documents.length == 0) {
// Update data to server if new user
Firestore.instance
.collection('users')
.document(firebaseUser.uid)
.setData({
'id': firebaseUser.uid,
'nickname': firebaseUser.displayName,
'photoUrl': firebaseUser.photoUrl,
'createdAt': DateTime.now().millisecondsSinceEpoch.toString(),
});
// Write data to local
currentUser = firebaseUser;
await prefs.setString('id', currentUser.uid);
await prefs.setString('nickname', currentUser.displayName);
await prefs.setString('photoUrl', currentUser.photoUrl);
} else {
// Write data to local
await prefs.setString('id', documents[0]['id']);
await prefs.setString('nickname', documents[0]['nickname']);
await prefs.setString('photoUrl', documents[0]['photoUrl']);
}
Fluttertoast.showToast(msg: "Sign in success");
this.setState(() {
isLoading = false;
});
Navigator.push(
context, MaterialPageRoute(builder: (context) => HomePage()));
} else {
Fluttertoast.showToast(msg: "Sign in fail");
this.setState(() {
isLoading = false;
});
}
return firebaseUser;
}
我得到的错误是:
W/Gralloc3(22915): mapper 3.x is not supported
D/FlutterView(22915): Attaching to a FlutterEngine: io.flutter.embedding.engine.FlutterEngine@3c0fd83
D/FlutterView(22915): Already attached to this engine. Doing nothing.
W/ActivityThread(22915): handleWindowVisibility: no activity for token android.os.BinderProxy@ac37963
E/flutter (22915): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter (22915): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (22915): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter (22915): <asynchronous suspension>
E/flutter (22915): #2 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:349:48)
E/flutter (22915): #3 MethodChannelGoogleSignIn.signIn (package:google_sign_in_platform_interface/src/method_channel_google_sign_in.dart:45:10)
E/flutter (22915): #4 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:227:42)
E/flutter (22915): <asynchronous suspension>
E/flutter (22915): #5 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:282:18)
E/flutter (22915): #6 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:352:9)
E/flutter (22915): #7 _SignDemoState._handleSignIn (package:food/main.dart:67:64)
E/flutter (22915): #8 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (22915): #9 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (22915): #10 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (22915): #11 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (22915): #12 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (22915): #13 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (22915): #14 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (22915): #15 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (22915): #16 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter (22915): #17 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter (22915): #18 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter (22915): #19 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter (22915): #20 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (22915): #21 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (22915): #22 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (22915): #23 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (22915): #24 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (22915): #25 _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (22915): #26 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (22915): #27 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (22915): #28 _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (22915): #29 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter (22915):
E/flutter (22915):
W/ActivityThread(22915): handleWindowVisibility: no activity for token android.os.BinderProxy@e2eecf9
E/flutter (22915): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter (22915): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (22915): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter (22915): <asynchronous suspension>
E/flutter (22915): #2 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:349:48)
E/flutter (22915): #3 MethodChannelGoogleSignIn.signIn (package:google_sign_in_platform_interface/src/method_channel_google_sign_in.dart:45:10)
E/flutter (22915): #4 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:227:42)
E/flutter (22915): <asynchronous suspension>
E/flutter (22915): #5 GoogleSignIn._addMethodCall.<anonymous closure> (package:google_sign_in/google_sign_in.dart:291:16)
E/flutter (22915): #6 _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter (22915): #7 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (22915): #8 _FutureListener.handleValue (dart:async/future_impl.dart:140:18)
E/flutter (22915): #9 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
E/flutter (22915): #10 Future._propagateToListeners (dart:async/future_impl.dart:711:32)
E/flutter (22915): #11 Future._addListener.<anonymous closure> (dart:async/future_impl.dart:391:9)
E/flutter (22915): #12 _rootRun (dart:async/zone.dart:1126:13)
E/flutter (22915): #13 _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (22915): #14 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (22915): #15 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
E/flutter (22915): #16 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter (22915): #17 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
E/flutter (22915):
D/FlutterView(22915): Detaching from a FlutterEngine: io.flutter.embedding.engine.FlutterEngine@3c0fd83
有人可以帮我解决问题吗,谢谢。
答案 0 :(得分:0)
问题来自google api,要解决该问题,您需要选择项目并填写“ OAuth”表单https://console.developers.google.com/apis/credentials/consent