Firebase Auth & AngularFire 在 IOS 设备上不起作用



我创建了一个Ionic5+电容器++Firebase项目,并添加了最新版本的AngularFire

桌面上的一切都很好,但当我在iPhone上启动时,出现了一个错误(嗯,没有错误,但重定向我的第一个页面不起作用(。

所以,日志中没有错误,只是出现了一个白色屏幕。

经过大量研究,我得出以下结论。

我使用AngularFireAuthGuard如下:

{
path: '',
loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule),
...canActivate(() => redirectUnauthorizedTo(['landing']))
}

我的研究让我意识到,最新版本的AngularFire firebase Auth并没有被正确检测到。

所以我找到了一段代码,为我解决了一段时间的问题:

import { Component } from '@angular/core';
import { Capacitor } from '@capacitor/core';
import { initializeApp } from 'firebase/app';
import { indexedDBLocalPersistence, initializeAuth } from 'firebase/auth';
import { environment } from 'src/environments/environment';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
})
export class AppComponent {
constructor() {
const app = initializeApp(environment.firebase);
if (Capacitor.isNativePlatform) {
initializeAuth(app, {
persistence: indexedDBLocalPersistence
});
}
}
}

当我想在我的应用程序组件中添加onAuthStateChanged时,我得到了以下错误:

auth/已初始化

在我看来,这可能是因为我的app.module.ts看起来像这样:

@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
IonicStorageModule.forRoot(),
AppRoutingModule,
AngularFireAuthModule,
AngularFireModule.initializeApp(environment.firebase)
],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})

我的应用程序在这里初始化,但如果我删除它,我会得到另一个注入错误。。。

你知道我该怎么解决这个问题吗?

想知道我的问题是否也有类似的关系:signin链接在web和android上都可以工作,但在iOS中应用程序打开,我看到链接被收到,但signInWithEmailLink((承诺既没有解决也没有捕获。

这是代码;我看到控制台日志,然后就沉默了:

console.log(`incoming Passwordless Login Link for mail ${email}: ${uri}, ${originalLink}`);
signInWithEmailLink(this.auth, email, originalLink)
.then(cred => {
console.log("successfully logged in", email, cred);
window.localStorage.removeItem("emailForSignIn");
this.router.navigateByUrl("/home");
})
.catch((err) => {
console.error("signInLink err", JSON.stringify(err));
this.ngZone.run(() => this.router.navigateByUrl("/pwlsignup"));
});

通话后,我确实看到了其中的几行,看看它是否相关:

nw_protocol_boringssl_get_output_frames(1301) [C4.1:2][0x7fee0fe19300] get output frames failed, state 8196
2018-11-12 22:12:05.398615-0800 QQBCHAT[37807:7011607] TIC Read Status [4:0x0]: 1:57

编辑:是的,我的肯定是另一个问题——我也找到了解决方案,只要有人在谷歌搜索中找到这个问题https://github.com/angular/angularfire/issues/2979#issuecomment-940910213

import {
getAuth,
indexedDBLocalPersistence,
initializeAuth,
provideAuth,
} from '@angular/fire/auth';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
...
provideAuth(() => {
if (Capacitor.isNativePlatform()) {
return initializeAuth(getApp(), {
persistence: indexedDBLocalPersistence,
});
} else {
return getAuth();
}
}),
]
})

相关内容

  • 没有找到相关文章

最新更新