This is the refrenced library from ng4-social-login.
Social login and authentication module for Angular 4. Supports authentication with Google, Linkedin and Facebook.
This will also return a token (for Facebook and Google) and code (for Linked In) along with profile detail so that logged in user from client side can also be verified on server side.
npm install --save ng-social-login
In your AppModule
, import the SocialLoginModule
import {
SocialLoginModule,
AuthServiceConfig,
GoogleLoginProvider,
FacebookLoginProvider,
LinkedinLoginProvider
} from 'ng-social-login';
const CONFIG = new AuthServiceConfig([
{
id: GoogleLoginProvider.PROVIDER_ID,
provider: new GoogleLoginProvider('Google-OAuth-Client-Id')
},
{
id: FacebookLoginProvider.PROVIDER_ID,
provider: new FacebookLoginProvider('Facebook-App-Id')
},
{
id: LinkedinLoginProvider.PROVIDER_ID,
provider: new LinkedinLoginProvider('LINKEDIN_CLIENT_ID')
}
]);
export function provideConfig() {
return CONFIG;
}
@NgModule({
declarations: [
...
],
imports: [
...
SocialLoginModule
],
providers: [
{
provide: AuthServiceConfig,
useFactory: provideConfig
}
],
bootstrap: [...]
})
export class AppModule { }
import {
AuthService
FacebookLoginProvider,
GoogleLoginProvider,
LinkedinLoginProvider
} from 'ng-social-login';
@Component({
selector: 'app-demo',
templateUrl: './demo.component.html',
styleUrls: ['./demo.component.css']
})
export class DemoComponent implements OnInit {
constructor(private authService: AuthService) { }
signInWithGoogle(): void {
this.authService.signIn(GoogleLoginProvider.PROVIDER_ID);
}
signInWithFB(): void {
this.authService.signIn(FacebookLoginProvider.PROVIDER_ID);
}
signInWithLinkedIN(): void {
this.authService.signIn(LinkedinLoginProvider.PROVIDER_ID);
}
signOut(): void {
this.authService.signOut();
}
}
You are notified when user logs in or logs out. You receive a SocialUser
object when the user logs in and a null
when the user logs out. SocialUser
object contains basic user information such as name, email, photo URL, etc.
import { AuthService } from 'ng-social-login';
import { SocialUser } from 'ng-social-login';
@Component({
selector: 'app-demo',
templateUrl: './demo.component.html',
styleUrls: ['./demo.component.css']
})
export class DemoComponent implements OnInit {
private user: SocialUser;
private loggedIn: boolean;
constructor(private authService: AuthService) { }
ngOnInit() {
this.authService.authState.subscribe((user) => {
this.user = user;
this.loggedIn = (user != null);
});
}
}
<img src='{{ user.photoUrl }}'>
<div>
<h4>{{ user.name }}</h4>
<p>{{ user.email }}</p>
</div>
you are welcome to report an issue or creating a pull request.