Android 14/新版Chrome环境下Angular+Firebase Auth/Hosting+Node.js服务端的第三方Cookie兼容问题及Angular实现方案求助
大家好,我现在碰到了一个和Chrome第三方Cookie拦截相关的Firebase Auth兼容问题,想请各位帮忙出出主意:
问题背景
我在做一个基于Angular+Firebase Auth/Hosting+Node.js后端的智能家居项目,现在遇到了新版Chrome自动拦截第三方Cookie导致的功能异常,但在Android 13设备、Ubuntu 20.10上的旧版Chrome,以及放开第三方Cookie限制的新版Firefox里,功能都是正常的。
参考方案与需求
我看到一个Google智能家居洗衣机示例项目里,用document.cookie = '__session=' + token + ';max-age=3600';的方式处理了类似问题,但这个示例是全Node.js实现的,我想在自己的Angular项目里实现同样的逻辑。另外如果有其他解决方案(比如在firebase.json里配置SameSite=Strict/Secure、使用CHIPS等),也欢迎大家提出。
当前项目状态与遇到的具体问题
版本迁移相关问题:
- 原本我用的是Angular 7,现在正在迁移到Angular 19,迁移过程中遇到了Firebase API调用的上下文错误:
login.component.ts:32 Firebase API called outside injection context: ɵzoneWrap(getRedirectResult) login.component.ts:32 Calling Firebase APIs outside of an Injection context may destabilize your application leading to subtle change-detection and hydration bugs. - 现在已经升级到Angular 19 + @angular/fire 19.0.0-rc.4,但项目在Android 14的Chrome上还是无法正常工作,目前重点想解决在Angular 19里实现
document.cookie设置__session令牌的逻辑。
- 原本我用的是Angular 7,现在正在迁移到Angular 19,迁移过程中遇到了Firebase API调用的上下文错误:
Auth方式切换后的新问题:
- 我尝试把
signinWithRedirect换成signinWithPopup(因为之前一个测试项目用Popup能正常工作,而主项目用Redirect会出问题),结果遇到了跨源策略错误:main-NYXVCRV2.js:8 Cross-Origin-Opener-Policy policy would block the window.closed call.
- 我尝试把
我的Angular 7环境信息(供参考)
ng version _ _ ____ _ ___ / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _| / △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | | / ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | | /_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___| |___/ Angular CLI: 7.3.10 Node: 18.20.5 OS: linux x64 Angular: 7.2.16 ... animations, common, compiler, compiler-cli, core, forms ... language-service, platform-browser, platform-browser-dynamic ... router Package Version ----------------------------------------------------------- @angular-devkit/architect 0.13.10 @angular-devkit/build-angular 0.12.4 @angular-devkit/build-optimizer 0.12.4 @angular-devkit/build-webpack 0.12.4 @angular-devkit/core 7.3.10 @angular-devkit/schematics 7.3.10 @angular/cdk 7.3.7 @angular/cli 7.3.10 @angular/fire 5.4.2 @angular/material 7.3.7 @ngtools/webpack 7.2.4 @schematics/angular 7.3.10 @schematics/update 0.13.10 rxjs 6.3.3 typescript 3.2.2 webpack 4.28.4
希望有经验的朋友能帮忙指导一下:
- 如何在Angular 19里正确实现
__sessioncookie的设置逻辑? - 迁移过程中Firebase注入上下文的错误该怎么解决?
signinWithPopup遇到的跨源Opener策略问题有没有解决方案?- 其他针对Chrome第三方Cookie拦截的替代方案也可以推荐!
备注:内容来源于stack exchange,提问作者neuberfran
相关产品推荐
相关产品推荐

