Socket
Socket
Sign inDemoInstall

passport-linkedin-api-v2

Package Overview
Dependencies
82
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    passport-linkedin-api-v2

A simple [Passport](http://passportjs.org/) strategy for LinkedIn OAuth2 API Version 2.


Version published
Maintainers
1
Install size
5.64 MB
Created

Readme

Source

A simple Passport strategy for LinkedIn OAuth2 API Version 2.

Install

npm install passport-linkedin-api-v2

Usage

  1. Register the strategy with passport.use
  2. Call /auth/linkedin which calls the function authenticateUser
  3. Enter credentials for LinkedIn in browser
  4. Lite Profile is returned from LinkedIn
import { LinkedinAuth } from 'passport-linkedin-api-v2';

class LinkedInAuthController {
    public constructor() {
      passport.use('linkedin', this.getStrategy());
    }
    
    // Return strategy for LinkedIn
    private getStrategy = (): Strategy => {
        const params = {
          clientID: CLIENT_ID,
          clientSecret: CLIENT_SECRET,
          callbackURL: "http://127.0.0.1:3000/auth/linkedin",
          scope: ['r_emailaddress', 'r_liteprofile'],
        };
    
        return new linkedInStrategy(params,
          (accessToken: string, refreshToken: string, profile: any, done: any) => {
            // This function is called once a user successfully authenticated
            profile.accessToken = accessToken;
            done(profile);
          });
    };
    
    // Authenticate with LinkedIn and handle callback
    private authenticate = (strategy: string, state: string, callback: any) => passport.authenticate(
        strategy,
        {
          state,
          session: false,
          failWithError: true,
          passReqToCallback: true,
        },
        callback);
    
    // Route /auth/linkedin
    public authenticateUser = (req, res) => {
      this.authenticate('linkedin', 'custom_state', async (profile: any) => {
        // This function is called once a user successfully authenticated
        if (!profile || profile.id == null || profile.accessToken == null) {
          throw 'Authentication failed';
        }
        const user = await this.getUser(profile.accessToken);
      })(req, res);
    };
    
    // Return LiteProfile of user
    private getUser = (accessToken: string): Promise<IUser> => {
      return new Promise<IUser>((resolve, reject) => {
        LinkedinAuth.getLiteProfile(accessToken, (err, profile) => {
          if (err) {
            return reject(err);
          }
          resolve(profile);
        });
      });
    }
}

See this for details on LinkedIn API v2.

Issue Reporting

If you have found a bug or if you have a feature request, please report them at this repository issues section.

Author

Thomas Zwickl

License

This project is licensed under the MIT license. See the LICENSE file for more info.

FAQs

Last updated on 16 Mar 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc