Angular | Firebase | AngularFire | FirebaseUI | FirebaseUI-Angular | Note |
---|---|---|---|---|---|
12.1.0 | ^9.0.2 | ^7.0.4 | ^0.600.0 (@next version) | 6.0.0-beta.0 | Requires firebase v9 support by the official firebaseui lib (See #877) - See CHANGELOG for details |
12.1.0 | ^8.6.8 | ^6.1.5 | ^4.8.0 | 5.1.3 | |
11.0.2 | ^8.2.4 | ^6.1.1 | ^4.7.2 | 5.1.2 | support for auth emulator |
11.0.2 | ^8.1.1 | ^6.1.1 | ^4.7.1 | 5.1.1 | |
10.2.2 | ^8.0.1 | ^6.0.4 | ^4.7.1 | 5.1.0 | |
~8.2.13 | ^7.23.0 | ~5.2.1 | ~4.7.1 | ~4.0.1 |
Version combinations not documented here may work but are untested.
To install this library, run:
$ npm install firebaseui-angular --save
To run this library you need to have AngularFire2, Firebase,FirebaseUI-Web installed.Fast install:
$ npm install firebase firebaseui @angular/fire firebaseui-angular --save
Add the FirebaseUIModule
with the config to your imports. Make sure you have initialized AngularFire correctly.
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {FormsModule} from '@angular/forms';
import {AppComponent} from './app.component';
import {firebase, firebaseui, FirebaseUIModule} from 'firebaseui-angular';
import {environment} from '../environments/environment';
import {AppRoutingModule} from './app-routing.module';
import {AngularFireModule} from '@angular/fire';
import {AngularFireAuthModule, USE_EMULATOR as USE_AUTH_EMULATOR} from '@angular/fire/auth';
const firebaseUiAuthConfig: firebaseui.auth.Config = {
signInFlow: 'popup',
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
{
scopes: [
'public_profile',
'email',
'user_likes',
'user_friends'
],
customParameters: {
'auth_type': 'reauthenticate'
},
provider: firebase.auth.FacebookAuthProvider.PROVIDER_ID
},
firebase.auth.TwitterAuthProvider.PROVIDER_ID,
firebase.auth.GithubAuthProvider.PROVIDER_ID,
{
requireDisplayName: false,
provider: firebase.auth.EmailAuthProvider.PROVIDER_ID
},
firebase.auth.PhoneAuthProvider.PROVIDER_ID,
firebaseui.auth.AnonymousAuthProvider.PROVIDER_ID
],
tosUrl: '<your-tos-link>',
privacyPolicyUrl: '<your-privacyPolicyUrl-link>',
credentialHelper: firebaseui.auth.CredentialHelper.GOOGLE_YOLO
};
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
AppRoutingModule,
AngularFireModule.initializeApp(environment.firebaseConfig),
AngularFireAuthModule,
FirebaseUIModule.forRoot(firebaseUiAuthConfig)
],
providers: [
{ provide: USE_AUTH_EMULATOR, useValue: !environment.production ? ['localhost', 9099] : undefined },
],
bootstrap: [AppComponent]
})
export class AppModule {
}
Option 1: CSS Import
May be incompatible with older browsers.
Import the firebaseui css to your src/styles.css
file:
@import '~firebaseui/dist/firebaseui.css';
Option 2: Angular-CLI
File: angular.json
Path: "node_modules/firebaseui/dist/firebaseui.css"
{
"projects": {
[your-project-name]: {
...
"architect": {
"build": {
"options": {
...
"styles": [
"src/styles.css",
"node_modules/firebaseui/dist/firebaseui.css"
]
}
},
...
"test": {
"options": {
...
"styles": [
"src/styles.css",
"node_modules/firebaseui/dist/firebaseui.css"
]
}
}
}
}
}
}
Option 3: HTML Link
Put this in the <head>
tag of your index.html
file:
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/3.0.0/firebaseui.css" />
Make sure the version number matches the version of firebaseui you have installed with npm.
Once everything is set up, you can use the component in your Angular application:
<firebase-ui></firebase-ui>
For the configuration of the module see the official firebaseui documentation: Config
If you use a version prior to 3.3.0 check the old README
To configure the plugin the first time (main.module.ts
) the forRoot()
method is used.It builds the basis for all further uses of the plugin.But you have the possibility to overwrite the entire or just parts of the configuration in any (sub-)module.
To overwrite the entire configuration use:
FirebaseUIModule.forRoot(firebaseUiAuthConfig: NativeFirebaseUIAuthConfig)
To overwrite just parts of the configuration use:
FirebaseUIModule.forFeature(firebaseUiAuthConfig: NativeFirebaseUIAuthConfig)
This will use the in forRoot
provided configuration and overwrite just the newly provided values.
You may need to dynamically create the firebaseui configuration object based on application settings or the like. An example of this might be to conditionally enable certain providers for different deployments of the application.
To do this you can use a provider factory to inject the firebaseUIAuthConfig
in your module like so:
providers: [
{
provide: 'appConfig',
useValue: { googleAuthEnabled: true, emailAuthEnabled: false }
},
{
provide: 'firebaseUIAuthConfig',
useFactory: (config) => {
// build firebase UI config object using settings from `config`
const fbUiConfig: firebaseui.auth.Config = {
signInFlow: 'redirect',
signInOptions: [],
tosUrl: null,
privacyPolicyUrl: null,
credentialHelper: firebaseui.auth.CredentialHelper.GOOGLE_YOLO
};
if (config.googleAuthEnabled) {
fbUiConfig.signInOptions.push(firebase.auth.GoogleAuthProvider.PROVIDER_ID);
}
if (config.emailAuthEnabled) {
fbUiConfig.signInOptions.push({
provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,
requireDisplayName: true,
signInMethod: firebase.auth.EmailAuthProvider.EMAIL_PASSWORD_SIGN_IN_METHOD
});
}
// other providers as needed
return fbUiConfig;
},
deps: ['appConfig']
}
]
In this case we are injecting a settings object appConfig
into the provider factory. This object contains flags, such as googleAuthEnabled
and emailAuthEnabled
which are used to conditionally build the firebaseui config object. You would likely use a provider factory for this that reads settings from the environment or database.
this.angularFireAuth.authState.subscribe(this.firebaseAuthChangeListener);
private firebaseAuthChangeListener(response) {
// if needed, do a redirect in here
if (response) {
console.log('Logged in :)');
} else {
console.log('Logged out :(');
}
}
Don't forget to unsubscribe at the end.
<firebase-ui
(signInSuccessWithAuthResult)="successCallback($event)"
(signInFailure)="errorCallback($event)"
(uiShown)="uiShownCallback()"></firebase-ui>
successCallback(signInSuccessData: FirebaseUISignInSuccessWithAuthResult) {
...
}
errorCallback(errorData: FirebaseUISignInFailure) {
...
}
uiShownCallback() {
...
}
constructor(private firebaseuiAngularLibraryService: FirebaseuiAngularLibraryService) {
firebaseuiAngularLibraryService.firebaseUiInstance.disableAutoSignIn();
}
The internationalization with just the npm package of the official firebase-ui isn't possible at the moment.
For a custom version with i18n support use: l0ll098/FirebaseUI-Angular-i18n
Thanks to @l0ll098!
Step 1: Fork and clone the repo from Github.
Step 2: There is a sample project in the root folder. Execute the following command in the root folder i.e. .../FirebaseUI-Angular > npm install
Step 3: Ensure that you are using Angular CLI version >10. You can check your version with ng --version
in the terminal.
Step 4: Replace with your firebase config in src\environments\environment.ts
.
Step 5: .../FirebaseUI-Angular > npm run build-lib
Step 6: .../FirebaseUI-Angular > ng serve
You're welcome to fork the repo and contribute to library sources in projects
> firebaseui-angular-library
> src
> lib
.
There are test files, but they are empty at the moment. Writing unit test is a good start.
The UI only gets rendered if the user isn't signed in. So if the UI isn't shown, sign out the user via angular-fire.
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'firebase/index' in '...'
ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'firebaseui/dist/index' in '...'
Use the firebase and firebaseui instances exposed by the plugin:
import {..., firebase, firebaseui} from 'firebaseui-angular';
If you have added the css to the angular.json but nothing happened. Try to restart the server (Ctrl-C
and ng serve
)
This is a know issue in the firebase project. To fix that (for now), do that:
npm install promise-polyfill --save-exact
http://localhost:4200/images/buffer.svg?embed
404 (Not Found)Put this into your styles.scss file:
@supports (-webkit-appearance:none) {
.mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate) > .auxbar,
.mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {
mask: url(/assets/images/buffer.svg?embed) !important;
}
}
and put a buffer.svg
file into assets/images
.This will stop this error message.
If you like the project and want to support me, I have apage.
MIT © Raphael Jenni
FirebaseUI for Android — UI Bindings for Firebase FirebaseUI is an open-source library for Android that allows you toquickly connect common UI elements to Firebase APIs. A compatible FirebaseUI client
ngx-auth-firebaseui - Open Source Library for Angular Web Apps to integrate a material user interface for firebase authentication. Angular UI component for firebase authentication.This library is an a
我正在尝试使用rollup导入fire baseui库。如果我将firbaseui包含在他们提供的cdn中,用户界面加载良好: 但是,如果我尝试使用导入它,我会在浏览器中遇到以下错误:
我正在尝试制作一个适配器,它将显示给listview实时数据库内容。 带适配器返回null得身份验证: 类: 请求布局:
这是我从Firebase控制台得到的数据。 我试图创建用户UID中的子对象的数据库引用,以便将它们用于回收器适配器。 database reference ref = firebase database . getinstance()。getReference()。儿童(“优惠”)。孩子(???)
我在我的react.js应用程序中安装了Firebase,安装了FirebaseUI,并让Google sign-in正常工作。但是,Google signin按钮上绝对没有应用css样式表。我在https://firebase.google.com/docs/auth/web/firebaseui这里看了文档,并访问了firebaseui.css文件的cdn链接https://cdn . fir