警惕网站免费看手机网站开发公司专业

张小明 2026/1/9 11:36:35
警惕网站免费看手机,网站开发公司专业,网站更换空间后排名消失 首页被k,免费域名注册微信下载Firebase提供了一套SDK用于抹平不用平台鉴权的差异性#xff0c;为了方便使用#xff0c;将基于firebase_auth、google_sign_in、sign_in_with_apple的依赖封装一套登录统一的功能集成。鉴权后将会获取idToken#xff0c;该数据需要传给服务器进行校验。步骤#xff1a;1.定…Firebase提供了一套SDK用于抹平不用平台鉴权的差异性为了方便使用将基于firebase_auth、google_sign_in、sign_in_with_apple的依赖封装一套登录统一的功能集成。鉴权后将会获取idToken该数据需要传给服务器进行校验。步骤1.定义模块最终返回的数据结构class FirebaseAuthInfo { String? idToken; String? providerId; FirebaseAuthInfo({this.idToken, this.providerId}); Map toJson() { return {idToken: idToken, providerId: providerId}; } }2. 定义工具类提供login和logout方法enum LoginType { google, apple, phone, email } class LoginMethod { late LoginType loginType; factory LoginMethod(LoginType loginType) LoginMethod._(loginType); LoginMethod._(this.loginType) { switch (loginType) { case LoginType.google: break; case LoginType.apple: break; case LoginType.phone: break; case LoginType.email: break; } } Future login() async { switch (loginType) { case LoginType.google: return await _googleSign(); case LoginType.apple: return await _appleSign(); case LoginType.phone: return; case LoginType.email: return; } } void logout() { switch (loginType) { case LoginType.google: _googleOut(); break; case LoginType.apple: break; case LoginType.phone: break; case LoginType.email: break; } } }3. 基于Firebase Email的鉴权方法该方法调用时Android和IOS需要配置对应SchemeUrl通过Applink才能实现FutureFirebaseAuthInfo? verifyEmail(String email, Uri uri) async { if (FirebaseAuth.instance.isSignInWithEmailLink(uri.toString())) { try { final firebaseAuth await FirebaseAuth.instance .signInWithEmailLink(email: email, emailLink: uri.toString()); var idToken await firebaseAuth.user?.getIdToken(); return Future.value(FirebaseAuthInfo( idToken: idToken, providerId: firebaseAuth.credential?.providerId)); } catch (error) { print(Error signing in with email link.); } return null; } else { return null; } }4. 基于Firebase Phone的鉴权方法验证码条数需要Firebase console中配置FutureFirebaseAuthInfo? phoneSign(String code, String phone) async { CompleterFirebaseAuthInfo? completer Completer(); await FirebaseAuth.instance.verifyPhoneNumber( phoneNumber: $code $phone, verificationCompleted: (PhoneAuthCredential credential) async { final firebaseAuth await FirebaseAuth.instance.signInWithCredential(credential); var idToken await firebaseAuth.user?.getIdToken(); if (!completer.isCompleted) { completer.complete(FirebaseAuthInfo( idToken: idToken, providerId: firebaseAuth.credential?.providerId)); } }, verificationFailed: (FirebaseAuthException e) { if (!completer.isCompleted) { completer.complete(null); } }, codeSent: (String verificationId, int? resendToken) {}, codeAutoRetrievalTimeout: (String verificationId) { if (!completer.isCompleted) { completer.complete(null); } }, ); return completer.future; }5. 基于Google Account的鉴权方法获取账户信息的作用域请查询官方文档如需要每次登录都可以选择指定的google账号的动作需要登录前先登出否则本地有缓存下次调用将直接复用上一次的账号信息。void _googleOut() { try { var googleSignIn GoogleSignIn( scopes: String[ https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile ], ); googleSignIn.signOut(); } catch (e) {} } FutureFirebaseAuthInfo? _googleSign() async { try { var googleSignIn GoogleSignIn( scopes: String[ https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile ], ); await googleSignIn.signOut(); var googleAccountInfo await googleSignIn.signIn(); var googleAuth await googleAccountInfo?.authentication; if (googleAuth ! null) { var firebaseAuth await FirebaseAuth.instance .signInWithCredential(GoogleAuthProvider.credential( accessToken: googleAuth.accessToken, idToken: googleAuth.idToken, )); var idToken await firebaseAuth.user?.getIdToken(); return FirebaseAuthInfo( idToken: idToken, providerId: firebaseAuth.credential?.providerId); } else { return Future.value(); } } catch (e) { debugPrint(Auth error !:${e.toString()}); } return null; } }6. 基于Apple Account的鉴权方法FutureFirebaseAuthInfo? _appleSign() async { try { final appleIdCredential await SignInWithApple.getAppleIDCredential( scopes: [ AppleIDAuthorizationScopes.email, ], ); final oAuthProvider OAuthProvider(apple.com); final credential oAuthProvider.credential( idToken: appleIdCredential.identityToken, accessToken: appleIdCredential.authorizationCode, ); var identify await FirebaseAuth.instance.signInWithCredential(credential); var idToken await identify.user?.getIdToken(); return FirebaseAuthInfo(idToken: idToken, providerId: apple.com); } catch (e) { debugPrint(Auth error !:${e.toString()}); } return null; }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

asp网站程序上海闵行网

5分钟持续使用IDM下载工具:告别30天试用期烦恼的实用指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为IDM试用期到期而发愁?每次…

张小明 2026/1/7 4:32:23 网站建设

查询公司信息的网站php笔记网站

2025年的最后几天,人工智能领域并未因岁末而沉寂,反而接连投下几枚重磅炸弹。从英伟达发布旨在构建“可扩展多智能体系统”的开源模型Nemotron 3,到浪潮开源高效多模态模型Yuan 3.0 Flash,再到工业领域首个智能体中台的正式发布。这一系列密集的进展,清晰地勾勒出一个正在…

张小明 2026/1/7 4:32:23 网站建设

手机搭建网站软件公司网站怎么免费建

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

张小明 2026/1/6 8:14:43 网站建设

莎娜琳官方网站做水石家庄高铁站

想象一下,你不再需要排队等待云端AI生成视频,而是在自己的电脑上随心所欲地创作专业级视频内容。Wan2.2-TI2V-5B这款开源视频生成模型正是为你实现这一梦想而设计的!🎉 【免费下载链接】Wan2.2-TI2V-5B Wan2.2-TI2V-5B是一款开源的…

张小明 2026/1/8 15:57:32 网站建设

网站建设课程设计百度文库企业推广ppt模板

在中小企业数字化转型中,全流程闭环管理(客户→销售→生产→交付→财务→采购→供应链)是提升效率、降低成本的核心需求。但不同品牌的功能覆盖深度、场景适配性差异显著。本文选取超兔一体云、SAP、Salesforce、Microsoft Dynamics 365 CRM、…

张小明 2026/1/7 23:19:17 网站建设

东莞免费网站制作做的好看的外国网站

BetterNCM插件管理器完整安装与使用手册 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM插件管理器是专为网易云音乐设计的强大功能扩展工具,能够帮助用户轻松安装…

张小明 2026/1/6 8:14:38 网站建设