在我的Ionic 5电容器应用程序中,我有一个按钮来调用这个功能。
import {
signInWithEmailAndPassword, signOut,
User, UserCredential,
} from '@angular/fire/auth';//.之类的
async signIn(value)
{
try {alert('signing in')
return (await signInWithEmailAndPassword(this.auth, value.email, value.password)).user
} catch (error) {
alert('what the heck?' + error)
}
}这在网络上和Android上都很好(它返回对象并继续运行)。在iOS模拟器&这个设备上,它可以与肝脏一起工作,但是没有肝脏,它什么也不做,甚至什么都不返回。“签到”会弹出,但不会从那里开始。
知道为什么会这样吗?
发布于 2021-12-31 18:28:12
在app.module.ts文件中,将以下内容添加到导入数组中。
provideAuth(() => {
if (Capacitor.isNativePlatform()) {
return initializeAuth(getApp(), {
persistence: indexedDBLocalPersistence,
});
} else {
return getAuth();
}
}),并从@angular/fire/auth导入必要的函数和值。
这是与普耐特·库什韦类似的解决方案。我发现这个解决方案更好,因为它使您的app.component.ts文件保持整洁。
发布于 2021-12-31 13:25:01
在挣扎之后,幸运的是我找到了需要做的事情。
在您的app.component.ts中添加以下代码:
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
});
}
}
}https://stackoverflow.com/questions/70429044
复制相似问题