简体   繁体   English

Flutter firebase_auth signInWithCredential 不适用于 android

[英]Flutter firebase_auth signInWithCredential is not working on android

Greetings flutter developers am developing an app for iOS and android which uses phone auth to authenticate users everything works fine in iOS but for android when this line is called I get an error :问候颤振开发人员正在为 iOS 和 android 开发一个应用程序,它使用电话身份验证来验证用户在 iOS 中一切正常,但是对于 android,当调用此行时,我收到一个错误:

    final FirebaseUser user = await _auth.signInWithCredential(credential);

the error :错误 :

E/flutter (14190): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception: E/flutter (14190): PlatformException(error, null reference, null) E/flutter (14190): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:551:7) E/flutter (14190): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:292:18) E/flutter (14190): E/flutter (14190): #2 FirebaseAuth.signInWithCredential (file:///Users/pocketcarage/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.8.0+1/lib/src/firebase_auth.dart:211:54) E/flutter (14190): E/flutter (14190): #3 _RegisterState.signIn (package:pocketcarage_official/UI/register.dart:92:43) E/flutter (14190): E/flutter (14190): #4 _RegisterState.smsCodeDialog.. (package:pocketcarage_official/UI/register.dart:77:23) E/flutter (14190): #5 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14) E/flutter (14190): #6 _InkResponseState.build. E/flutter (14190): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception: E/flutter (14190): PlatformException(error, null reference, null) E/flutter (14190) ): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:551:7) E/flutter (14190): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:292 :18) E/flutter (14190): E/flutter (14190): #2 FirebaseAuth.signInWithCredential (file:///Users/pocketcarage/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth -0.8.0+1/lib/src/firebase_auth.dart:211:54) E/flutter (14190): E/flutter (14190): #3 _RegisterState.signIn (package:pocketcarage_official/UI/register.dart:92 :43) E/flutter (14190): E/flutter (14190): #4 _RegisterState.smsCodeDialog.. (package:pocketcarage_official/UI/register.dart:77:23) E/flutter (14190): #5 _InkResponseState。 _handleTap (package:flutter/src/material/ink_well.dart:507:14) E/flutter (14190): #6 _InkResponseState.build。 (package:flutter/src/material/ink_well.dart:562:30) E/flutter (14190): #7 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) E/flutter (14190): #8 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9) E/flutter (14190): #9 TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7) E/flutter (14190): #10 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9) E/flutter (14190): #11 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12) E/flutter (14190): #12 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11) E/flutter (14190): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19) E/flutter (14190): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22) E/flutter (14190): #15 _WidgetsF (package:flutter/src/material/ink_well.dart:562:30) E/flutter (14190): #7 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) E/flutter ( 14190): #8 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9) E/flutter (14190): #9 TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart: 175:7) E/flutter (14190): #10 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9) E/flutter (14190): #11 PointerRouter._dispatch (package:flutter/ src/gestures/pointer_router.dart:73:12) E/flutter (14190): #12 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11) E/flutter (14190): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19) E/flutter (14190): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:180:19) /flutter (14190): #15 _WidgetsF lutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7) E/flutter (14190): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7) E/flutter (14190): #17 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7) E/flutter (14190): #18 _invoke1 (dart:ui/hooks.dart:168:13) E/flutter (14190): #19 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5) lutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7) E/flutter (14190): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:138:7) /flutter (14190): #17 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7) E/flutter (14190): #18 _invoke1 (dart:ui/hooks.dart:13:7) ) E/flutter (14190): #19 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)

which states PlatformException(error, null reference, null) that there is null reference although it works 100% on iPhone .其中指出 PlatformException(error, null reference, null) 尽管它在 iPhone 上 100% 工作,但存在空引用。 I searched and I found that there's some problems with flutter plugins and a solution would be migrating to androidx and I tried but I keep getting required compilesdk at least 28 and I already changed it what should I do ?我进行了搜索,发现 flutter 插件存在一些问题,解决方案将迁移到 androidx,我尝试过,但我一直要求 compilesdk 至少为 28 并且我已经更改了它,我该怎么办?

this is the code that's get called这是被调用的代码

Future<String> signIn(String smsCode) async {

final AuthCredential credential = PhoneAuthProvider.getCredential(
  verificationId: verificationId,
  smsCode: smsCode,
);

final FirebaseUser user = await _auth.signInWithCredential(credential);


final FirebaseUser currentUser = await _auth.currentUser();
DatabaseReference user_db = pDatabase.reference().child("users");
DatabaseReference phone_id = pDatabase.reference().child("phone_id");

String uid = user.uid;
usersModel new_user = new usersModel();
new_user.phone=_phoneController.text;
new_user.email=_emailController.text;
new_user.name=_nameController.text;
user_db.child(uid).child("name").set(new_user.userName);
user_db.child(uid).child("phone").set(new_user.userPhone);
user_db.child(uid).child("email").set(new_user.userEmail);
phone_id.child(new_user.userPhone).set(uid);
assert(user.uid == currentUser.uid);
Navigator.pop(context);
Navigator.of(context).pushNamed('/Home');
return 'signInWithPhoneNumber succeeded: $user';
}

UPDATE: After making the following changes to my project, the login method seems to be working:更新:对我的项目进行以下更改后,登录方法似乎有效:

In pubspec.yaml: updated the sdk version from ">=2.0.0-dev.68.0 <3.0.0" to ">=2.1.0 <3.0.0"在 pubspec.yaml 中:将 sdk 版本从 ">=2.0.0-dev.68.0 <3.0.0" 更新为 ">=2.1.0 <3.0.0"

In android/build.gradle: updated the dependency for com.android.tools.build:gradle:3.3.1 to use version 3.2.1 updated the dependency for com.google.gms:google-services:4.0.1 to use version 4.2.0在 android/build.gradle: 更新了 com.android.tools.build:gradle:3.3.1 的依赖以使用版本 3.2.1 更新了 com.google.gms:google-services:4.0.1 的依赖以使用版本4.2.0

Also, since there ended up being a gradle issue with multidexing after these changes, I updated the android/app/build.gradle file to have a "multiDexEnabled true" property under defaultConfig and added "implementation 'com.android.support:multidex:1.0.3'" to the buildTypes此外,由于在这些更改后最终出现了多索引的 gradle 问题,我更新了 android/app/build.gradle 文件,使其在 defaultConfig 下具有“multiDexEnabled true”属性,并添加了“implementation 'com.android.support:multidex: 1.0.3'" 到 buildTypes


OP:操作:

Someone else has noticed the same issue, and has filed an Issue on the repository for the firebase_auth Dart package: https://github.com/flutter/flutter/issues/28057其他人已经注意到了同样的问题,并在 firebase_auth Dart 包的存储库上提交了一个问题: https : //github.com/flutter/flutter/issues/28057

I had the same issue.我遇到过同样的问题。 This worked for me.这对我有用。

(await _auth.signInWithCredential(credential)).user;

i have same issue,after searching full day i solve problem, problem is in the depandcy please add following depandancy我有同样的问题,在搜索了一整天后我解决了问题,问题出在 depandcy 请添加以下 depandancy

google_sign_in: ^4.0.1+1 firebase_auth: ^0.8.1+1 google_sign_in: ^4.0.1+1 firebase_auth: ^0.8.1+1

try {
      final AuthCredential credential = PhoneAuthProvider.getCredential(
        verificationId: verificationId,
        smsCode: smsOTP,
      );
      final FirebaseUser user =
          (await _auth.signInWithCredential(credential)).user;
} catch (e) {
      print("Error: $e");
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM