Flutter:使用谷歌身份验证在 Firebase 存储中实施任何身份验证失败

     2023-02-23     46

关键词:

【中文标题】Flutter:使用谷歌身份验证在 Firebase 存储中实施任何身份验证失败【英文标题】:Flutter: implement any authentication in Firebase storage with google authentication fails 【发布时间】:2021-02-10 20:30:39 【问题描述】:

我的应用在 Flutter 中使用此代码上传图片:

final StorageReference imageRef = FirebaseStorage.instance.ref().child('postimages');
    final StorageUploadTask uploadTask = imageRef.child('/' + currentUser.id + '/post_$postid.jpg').putFile(_image);
    var upurl = await (await uploadTask.onComplete).ref.getDownloadURL();
    url = upurl.toString();
    debugPrint('url:$url');

如果我通过这些不推荐的规则授予完全重写访问权限,那么它工作正常:

rules_version = '2';
service firebase.storage 
  match /b/bucket/o 
    match /allPaths=** 
      allow read, write: if true;
    
  

但如果我尝试使用此规则实施任何安全性:

rules_version = '2';
service firebase.storage 
  match /b/bucket/o 
    match /allPaths=**       
      allow read, write: if request.auth != null;

    
  

我最终得到以下异常: [VERBOSE-2:ui_dart_state.cc(177)] 未处理的异常:PlatformException(错误 -13021,FIRStorageErrorDomain,用户无权访问 gs://picturegramm.appspot.com/postimages/118190432651181005229/post_b050df01-7b58-4016- 8d3c-28c7f3ace630.jpg., null)

该应用使用 Google 作为登录提供商的 Firebase 身份验证。 阅读文档,似乎 auth 信息总是自动发送。 签名似乎工作得很好,因为我正在使用用户 ID 获取当前用户。 那么为什么请求会失败?

【问题讨论】:

您确定用户已使用谷歌登录。如果用户退出,这将不起作用。他们必须登录。 知道我在上传之前如何验证这一点吗?登录似乎正在工作,因为我得到例如电子邮件、身份证和个人资料图片。 通过final user = FirebaseAuth.instance.currentUser;检查用户是否存在,如果用户没有登录,user将为空。 泰!它是空的。现在我必须在签名完成后找出为什么会这样 现在至少你已经缩小了问题的范围。我猜你在登录逻辑的某个地方有错误。 【参考方案1】:

感谢 Gabe 的 cmets,我发现代码确实有效,但我的身份验证不完整,因为我没有将登录信息传递给 firebase。 以供将来参考,这是使其工作所需的完整登录代码:

  final GoogleSignInAccount googleUser = await GoogleSignIn().signIn();

  // Obtain the auth details from the request
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  // Create a new credential
  final GoogleAuthCredential credential = GoogleAuthProvider.credential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  // Once signed in, return the UserCredential
  UserCredential creds = await  FirebaseAuth.instance.signInWithCredential(credential);
  debugPrint('creds:$creds');

【讨论】:

Firebase 通知 Flutter iOS

】Firebase通知FlutteriOS【英文标题】:FirebaseNotificationFlutteriOS【发布时间】:2020-12-1708:28:29【问题描述】:我开发了一个Flutter应用程序,并集成了Firebase通知和Firebase电话身份验证。我能够在开发模式以及应用发布后进行手机身份... 查看详情

使用存储和 cookie(不使用 Firebase)在 Flutter 中进行身份验证?

】使用存储和cookie(不使用Firebase)在Flutter中进行身份验证?【英文标题】:AuthinFlutterusingstorageandcookie(notusingFirebase)?【发布时间】:2021-03-1117:44:33【问题描述】:我现在正在尝试为Flutter构建一个登录屏幕。我有两个关于它在Flu... 查看详情

在 Flutter 上使用电子邮件和密码进行 Firebase 身份验证的示例?

】在Flutter上使用电子邮件和密码进行Firebase身份验证的示例?【英文标题】:ExampleofFirebaseAuthwithEmailandPasswordonFlutter?【发布时间】:2018-11-2515:31:30【问题描述】:第一次实现Firebase身份验证,这也是Flutter开发人员的新手,我希望... 查看详情

在 Flutter 中使用 FirebaseAuth 检查用户的身份验证状态

】在Flutter中使用FirebaseAuth检查用户的身份验证状态【英文标题】:checkauthenticationstateofUserusingFirebaseAuthinFlutter【发布时间】:2020-12-1911:34:04【问题描述】:我知道存在这样的问题,但其中充满了过时和不正确的答案。新的FlutterFi... 查看详情

Flutter:使用从 Firebase 身份验证创建的帐户在 Firestore 中创建用户

】Flutter:使用从Firebase身份验证创建的帐户在Firestore中创建用户【英文标题】:Flutter:CreatingauserinFirestoreusingtheaccountcreatedfromFirebaseAuthentication【发布时间】:2020-06-1021:41:18【问题描述】:我正在创建一个使用dart语言和Firebase进行... 查看详情

在 Flutter 中使用 StreamProvider 4.0.1 从 Firebase 监控身份验证状态

】在Flutter中使用StreamProvider4.0.1从Firebase监控身份验证状态【英文标题】:MonitorAuthStatusfromFirebaseusingStreamProvider4.0.1inFlutter【发布时间】:2020-04-2902:52:22【问题描述】:如果用户没有明确退出应用程序,我会尝试自动登录。我正在... 查看详情

Flutter 在尝试使用 googleSingIn 进行 Firebase 身份验证时无法捕获 PlatformException

】Flutter在尝试使用googleSingIn进行Firebase身份验证时无法捕获PlatformException【英文标题】:FlutterunabletocatchPlatformExceptionwhileattemptingfirebaseauthwithgoogleSingIn【发布时间】:2019-01-2509:40:48【问题描述】:我刚刚开始使用flutter,我正在尝... 查看详情

Flutter Spotify API 身份验证

】FlutterSpotifyAPI身份验证【英文标题】:FlutterSpotifyApiAuthentication【发布时间】:2020-06-1814:37:12【问题描述】:我需要在使用Spotifyapi的Flutter应用中对用户进行身份验证。我使用flutter_web_auth打开WebView并让用户在那里登录。我无法... 查看详情

Flutter + Firebase Auth:有啥方法可以在 Web 上使用 Firebase 电话身份验证重新发送短信验证码?

】Flutter+FirebaseAuth:有啥方法可以在Web上使用Firebase电话身份验证重新发送短信验证码?【英文标题】:Flutter+FirebaseAuth:IsthereanywaytoresendtheSMSverificationcodewithFirebasephoneauthonweb?Flutter+FirebaseAuth:有什么方法可以在Web上使用Firebase电话... 查看详情

flutter - 如何保持用户登录谷歌

】flutter-如何保持用户登录谷歌【英文标题】:flutter-Howtokeepusersigned-inwithGoogle【发布时间】:2019-05-1508:17:33【问题描述】:我已使用Google登录通过FirebaseAuth对用户进行身份验证,并且我成功取回了我的Firebase用户。当他们回到应... 查看详情

在 Flutter 中使用 Firebase 身份验证检查用户是不是是新用户

】在Flutter中使用Firebase身份验证检查用户是不是是新用户【英文标题】:CheckifuserisnewusingFirebaseAuthenticationinFlutter在Flutter中使用Firebase身份验证检查用户是否是新用户【发布时间】:2019-01-2000:37:13【问题描述】:根据thispage的底部... 查看详情

使用提供程序在 Flutter 中进行 Firebase 电话身份验证 [关闭]

】使用提供程序在Flutter中进行Firebase电话身份验证[关闭]【英文标题】:FirebasePhoneAuthenticationinFlutterusingProvider[closed]【发布时间】:2020-04-2500:26:18【问题描述】:我刚刚找到了一个状态管理提供商,我很想知道如何使用Provider实... 查看详情

在 Flutter 中使用 Firebase 电话身份验证超时后使 OTP 无效

】在Flutter中使用Firebase电话身份验证超时后使OTP无效【英文标题】:InvalidateOTPaftertimeoutusingfirebasephoneauthenticationinflutter【发布时间】:2021-03-2917:23:52【问题描述】:我在我的颤振应用程序中使用firebase电话身份验证,我想在超时... 查看详情

如何在 Flutter 手机身份验证中删除验证码

】如何在Flutter手机身份验证中删除验证码【英文标题】:HowtoremoverecaptchainFlutterphoneauth【发布时间】:2021-06-0513:35:24【问题描述】:我正在为Android和iOS设备开发Flutter应用。我正在使用来自firebase的电话身份验证。每次用户尝试... 查看详情

如何使用 IOS Flutter 的 Firebase 在电话身份验证中禁用重新验证

】如何使用IOSFlutter的Firebase在电话身份验证中禁用重新验证【英文标题】:HowtodisablerecaptchaverificationinphoneAuthenticationwithfirebaseforIOSFlutter【发布时间】:2021-07-1320:51:59【问题描述】:我正在开发一个具有类似注册流程的颤振应用... 查看详情

使用基于 Web 的 Flutter 应用程序进行身份验证

】使用基于Web的Flutter应用程序进行身份验证【英文标题】:Authenticationwithwebbasedflutterapp【发布时间】:2020-05-0412:12:06【问题描述】:我想构建一个Flutter应用程序,人们可以在其中登录并发布内容供其他用户查看。我希望这个应... 查看详情

用于创建手机身份验证凭据的验证ID在flutter中无效

】用于创建手机身份验证凭据的验证ID在flutter中无效【英文标题】:TheverificationIDusedtocreatethephoneauthcredentialisinvalidinflutter【发布时间】:2020-12-1911:30:50【问题描述】:我正在尝试在我的颤振应用程序中实现Firebase电话身份验证,... 查看详情

在进行身份验证之前,如何使用 Flutter 从 Cloud Firestore 搜索和访问数据?

】在进行身份验证之前,如何使用Flutter从CloudFirestore搜索和访问数据?【英文标题】:HowtosearchfordataandaccessitfromcloudfirestorewithFlutterbeforebeingauthenticated?【发布时间】:2021-05-0510:54:06【问题描述】:在我的应用程序中,我有两个用... 查看详情