Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败

Posted

技术标签:

【中文标题】Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败【英文标题】:Flutter Web: google_sign_in_web: Works on desktop and iOS. Fails on Android Chrome 【发布时间】:2021-01-04 20:58:34 【问题描述】:

链接到 Firebase 的简单身份验证代码。该代码在移动 ios Safari 和桌面浏览器上运行良好。在 android Chrome 上登录失败(停止)。

简单代码sn-p:


final GoogleSignIn googleSignIn = GoogleSignIn();

  Future loginGoogle() async 
    try 
      Print('AAA');
      await googleSignIn.signIn();
      print('BBB');
     catch (error) 
      print(error);
    
  

  //Listener initialized at creation of this class.
  googleSignInListener() 
    return googleSignIn.onCurrentUserChanged.listen((account) async 
      handleSignIn(account);
    , onError: (err) => print('Error signing in: $err'));
  

当谷歌登录弹出选项卡在 Android 上打开时,Flutter 似乎停止了。一旦 google 选项卡通过身份验证并自动关闭,flutter 选项卡就会恢复但什么也不做。在 Android Chrome 上,控制台输出仅显示“AAA”。如果我在第一次尝试失败后再次尝试登录,则输出相同,只有“AAA”且没有 google 登录弹出窗口。

控制台也不会打印任何错误。

此代码在桌面浏览器和 iOS Safari 浏览器上运行良好。

Android 是否会在后台 Chrome 选项卡中停止应用程序?

【问题讨论】:

【参考方案1】:

我能够得到这个工作。事实证明,您必须在两个位置告知 google 网站 Uri 的身份验证来自哪里以及成功的身份验证可以重定向到哪里。一个位置在 google 控制台中,另一个位置在 firebase 控制台身份验证下。

但是,我无法让 google_sign_in_web 包继续工作。我使用了 firebase_auth 包并在身份验证请求中设置了谷歌提供程序。这很好用。这是使用 firebase_auth 调整和工作的代码的 sn-p

import 'package:firebase_auth/firebase_auth.dart' as FA;
//...

class Auth with ChangeNotifier 
  final FA.FirebaseAuth firebaseAuth = FA.FirebaseAuth.instance;
  FA.GoogleAuthProvider googleAuthProvider = FA.GoogleAuthProvider();
  StreamSubscription<FA.User> authListener;
  //...

  Auth() 
    authListener = signInListener();
    //...
  

  Future loginGoogle() async 
    await firebaseAuth.setPersistence(FA.Persistence.LOCAL);
    auth = await firebaseAuth.signInWithPopup(googleAuthProvider);
  

  signInListener() 
    return firebaseAuth.authStateChanges().listen((_user) async 
      //Auth state changed...
    );
  

  //...


【讨论】:

以上是关于Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Flutter 移动应用迁移到 Flutter Web

flutter Web端支持内嵌加载网页

Flutter web 最新进展: 发掘更多可能!

Flutter 调味移动应用和 Flutter web

flutter web开发环境配置

flutter web开发环境配置