当前位置: 首页 > 知识库问答 >
问题:

Flutterfirebase_authSignInAnd Credential无法在Android上工作

郏兴贤
2023-03-14

问候flutter开发人员正在开发一个应用程序,iOS和Android使用手机身份验证用户一切正常iOS但Android当这一行被称为我得到一个错误:

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

错误:

E/flutter(14190):[ERROR: flutter/shell/通用/shell.cc(184)]Dart错误:未处理的异常: E/flutter(14190): PlatformExc0019(错误,空引用,空)E/flutter(14190):#0标准方法odec.decode信封(包:flutter/src/service/message_codecs.dart:551: 7)E/flutter(14190):#1方法hannel.invoke方法(软件包: flutter/src/service/platform_channel.dart:292: 18)E/flutter(14190): E/flutter(14190):#2 Firebase Auth.signInESS Credential(file://用户/口袋卡拉格/桌面/flutter/. pub-缓存/托管/pub.dartlang.org/firebase_auth-0.8.01/lib/src/firebase_auth.dart:211: 54)E/flutter(14190): E/flutter(14190):#3_RegisterState.signIn(包:pocketcarage_official/UI/register.dart:92: 43)E/flutter(14190): E/flutter(14190):#4_RegisterState.smsCodeDialog...(软件包:pocketcarage_official/UI/register.dart:77: 23)E/flutter(14190):#5_InkResponseState_handleTap(软件包: flutter/src/材质/ink_well.dart:507: 14)E/flutter(14190):#6_InkResponseState.build.(软件包: flutter/src/material/ink_well.dart:562: 30)E/flutter(14190):#7 GestureRecognizer.invoke回调(软件包: flutter/src/手势/recognizer.dart:102: 24)E/flutter(14190):#8 TapGesture识别器。_checkUp(软件包: flutter/src/手势/tap.dart:242: 9)E/flutter(14190):#9 TapGestureRecognizer.handlePrimaryPointer(软件包: flutter/src/手势/tap.dart:175: 7)E/flutter(14190):#10 PrimaryPointerGesture认可器. handleevent(软件包: flutter/src/手势/识别器. dart: 315:9)E/flutter(14190):#11指针路由器。_dispatch(软件包: flutter/src/手势/pointer_router. dart: 73:12)E/flutter(14190):#12 PointerRouter. path(软件包: flutter/src/手势/pointer_router. dart: 101:11)E/flutter(14190):#13_WidgetsFlutterBinding

这说明PlatformException(错误,空引用,空)存在空引用,尽管它在iPhone上100%工作。我搜索了一下,发现flatter插件有一些问题,解决方案是迁移到androidx,我试过了,但我一直得到至少28个必需的compilesdk,我已经改变了它,我该怎么办?

这是被调用的代码

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';
}

共有3个答案

岳刚洁
2023-03-14

我有同样的问题,在搜索了一整天后我解决了问题,问题在需求中请添加以下需求

google_sign_in:^4.0.1 1firebase_auth:^0.8.1 1

吴松
2023-03-14

我也有同样的问题。这对我有用。

(await _auth.signInWithCredential(credential)).user;
徐昆
2023-03-14

更新:对我的项目进行以下更改后,登录方法似乎正常工作:

在pubspec.yaml:更新了sdk版本从"

在android/build中。gradle:更新了com的依赖项。Android工具。建造:梯度:3.3。1使用3.2版。1已更新com的依赖项。谷歌。gms:googleservices:4.0。1使用版本4.2。0

此外,由于在这些更改之后出现了多重索引的渐变问题,我更新了android/app/build。gradle文件在defaultConfig下具有“multiDexEnabled true”属性,并在BuildType中添加了“implementation'com.android.support:multidex:1.0.3'”

OP:

其他人也注意到了同样的问题,并在firebase_auth Dart包的存储库中提交了一个问题:https://github.com/flutter/flutter/issues/28057

 类似资料:
  • 我对Android Studio有意见。 任务:应用程序:ProcessDebugResources失败AGPBI:{“kind”:“error”,“text”:“Android资源链接失败”,“sources”:[{“file”:“/users/luisabsg/.gradle/caches/transforms-2/files-2.1/270e51d2bcfda0833b0b336f50197

  • 我有一个在Android上使用awk的程序。在一行中,我有一个命令 代码是不能更改的,它必须是那样的。问题是,当我在非根Android上运行脚本时,会出现以下错误: 有了根的Android,这个问题并不是没有发生。是不是非根的Android没有从line读取的权限,或者是其他原因?有谁能提出一个解决办法吗

  • 我正在尝试点击设置应用程序中的显示按钮。但“FindElementBy..”语句不起作用,有时我会得到“nullpointer exception”或“no such element exist”异常,有时测试通过时没有单击Display按钮。 我尝试了不同的应用程序,但仍然是FindElementBy...在Win10中不工作。但当我从Win7笔记本电脑上运行同一台真实设备时,同样的代码也在工作

  • 电话录音器在大多数设备上录音,但在samsung grand上不工作。意味着在呼入或呼出时开始录音,并记录来自所选来源(麦克风等)的声音,但其他设备将停止录音(这可能是录音机无法在通话中从该来源获取数据的原因(Android的用户隐私问题))。 为此,我尝试了音频记录和媒体记录,但问题仍未解决。 我也试过audiorecord,但它对这个问题不起作用。

  • 我正在使用Selenium Web驱动程序,同时使用Chrome和HTMLUnit。对于Chrome,下面的代码可以工作,但HTMLUnit返回一个错误,表示找不到元素。 最后一行将返回null,未找到任何元素。使用的XPath是: 与Chrome配合使用,在XPath与HTMLUnit配合使用时失败。知道吗? 使用的驱动程序如下所示:

  • 我想将数据发送到一个WebService,但它没有返回一个有效的反馈,并且在字符串上显示错误。我正在使用KSOAP2。 null 对象已收集无法计算org.ksoap2.serialization.soapobject.ToString() 如果一切正常,它应该给我一个'OK',但是WebService返回一个XML(responseDump): <?XML Version=“1.0”encodi