File

src/providers/linkedin-login-provider.ts

Extends

BaseLoginProvider

Index

Properties
Methods

Constructor

constructor(clientId: string)
Parameters :
Name Type Optional
clientId string no

Properties

Public isInitialize
isInitialize: boolean
Type : boolean
Public loginProviderObj
loginProviderObj: LoginProviderClass
Type : LoginProviderClass
Default value : new LoginProviderClass()
Static Readonly PROVIDER_ID
PROVIDER_ID: string
Type : string
Default value : 'LINKEDIN'
isInitialize
isInitialize: boolean
Type : boolean
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:6

Methods

drawUser
drawUser(response: LinkedInResponse)
Parameters :
Name Type Optional
response LinkedInResponse no
Returns : SocialUser
initialize
initialize()
onLinkedInLoad
onLinkedInLoad()
Returns : void
signIn
signIn()
signOut
signOut()
Returns : Promise<any>
initialize
initialize()
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:7
loadScript
loadScript(obj: LoginProviderClass, onload: any)
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:11
Parameters :
Name Type Optional
obj LoginProviderClass no
onload any no
Returns : void
signIn
signIn()
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:8
signOut
signOut()
Inherited from BaseLoginProvider
Defined in BaseLoginProvider:9
Returns : Promise<any>
import { BaseLoginProvider } from '../entities/base-login-provider';
import { SocialUser, LoginProviderClass, LinkedInResponse } from '../entities/user';

declare let IN: any;

export class LinkedinLoginProvider extends BaseLoginProvider {
  public isInitialize: boolean;
  public static readonly PROVIDER_ID = 'LINKEDIN';
  public loginProviderObj: LoginProviderClass = new LoginProviderClass();

  constructor(private clientId: string) {
    super();
    this.loginProviderObj.id = clientId;
    this.loginProviderObj.name = 'LINKEDIN';
    this.loginProviderObj.url = 'https://platform.linkedin.com/in.js';
  }

  initialize(): Promise<SocialUser> {
    return new Promise((resolve, reject) => {
      this.loadScript(this.loginProviderObj, () => {
        IN.init({
          api_key: this.clientId,
          authorize: true,
          onLoad: this.onLinkedInLoad()
        });
        this.isInitialize = true;
        IN.Event.on(IN, 'auth', () => {
          if (IN.User.isAuthorized()) {
            IN.API.Raw(
              '/people/~:(id,first-name,last-name,email-address,picture-url)'
            ).result((res: LinkedInResponse) => {
              resolve(this.drawUser(res));
            });
          }
        });

      });
    });
  }

  onLinkedInLoad() {
    IN.Event.on(IN, 'systemReady', () => {
      IN.User.refresh();
    });
  }

  drawUser(response: LinkedInResponse): SocialUser {
    let user: SocialUser = new SocialUser();
    user.id = response.emailAddress;
    user.name = response.firstName + ' ' + response.lastName;
    user.email = response.emailAddress;
    user.photoUrl = response.pictureUrl;
    user.token = IN.ENV.auth.oauth_token;
    return user;
  }

  signIn(): Promise<SocialUser> {
    return new Promise((resolve, reject) => {
      IN.User.authorize(() => {
        IN.API.Raw('/people/~:(id,first-name,last-name,email-address,picture-url)').result((res: LinkedInResponse) => {
          resolve(this.drawUser(res));
        });
      });
    });
  }

  signOut(): Promise<any> {
    return new Promise((resolve, reject) => {
      IN.User.logout((response: any) => {
        resolve();
      }, (err: any) => {
        reject(err);
      });
    });
  }

}

results matching ""

    No results matching ""