npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

effectra-third-party

v1.0.0

Published

The Effectra/ThirdParty Package Typescript version

Downloads

2

Readme

Effectra ThirdParty Library

Effectra\ThirdParty is a TypeScript library that provides OAuth configuration and functionality for various third-party platforms such as LinkedIn, GitHub, Facebook, and Google. It simplifies the process of integrating with these platforms and accessing user data through OAuth authentication.

Features

  • Simplified OAuth configuration and authentication for third-party platforms.
  • Easy retrieval of access tokens and user information.
  • Supports multiple popular platforms like LinkedIn, GitHub, Facebook, and Google.

Installation

You can install the Effectra\ThirdParty library via npm. Run the following command in your project directory:

npm install @effectra/third-party

Usage

LinkedIn

To use the LinkedIn OAuth functionality, follow these steps:

  1. Create an instance of the LinkedIn class by providing your LinkedIn client ID, client secret, and optional redirect URL and scopes.
import { LinkedIn } from '@effectra/third-party';

const linkedin = new LinkedIn('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET', 'YOUR_REDIRECT_URL', ['r_liteprofile', 'r_emailaddress']);
  1. Generate the authorization URL to redirect the user for authentication:
const authUrl = linkedin.getAuthURL();
  1. Redirect the user to the generated authorization URL. After successful authentication, LinkedIn will redirect the user back to the specified redirect URL with an authorization code.

  2. Exchange the authorization code for an access token:

const code = '...'; // The authorization code obtained from the LinkedIn redirect
const accessToken = await linkedin.getAccessToken(code);
  1. Use the access token to retrieve user information:
const user = await linkedin.getUser(accessToken);

GitHub

To use the GitHub OAuth functionality, follow these steps:

  1. Create an instance of the GitHub class by providing your GitHub client ID, client secret, and optional redirect URL and scopes.
import { GitHub } from '@effectra/third-party';

const github = new GitHub('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET', 'YOUR_REDIRECT_URL', ['user']);
  1. Generate the authorization URL to redirect the user for authentication:
const authUrl = github.getAuthURL();
  1. Redirect the user to the generated authorization URL. After successful authentication, GitHub will redirect the user back to the specified redirect URL with an authorization code.

  2. Exchange the authorization code for an access token:

const code = '...'; // The authorization code obtained from the GitHub redirect
const accessToken = await github.getAccessToken(code);
  1. Use the access token to retrieve user information:
const user = await github.getUser(accessToken);

Facebook

To use the Facebook OAuth functionality, follow these steps:

  1. Create an instance of the Facebook class by providing your Facebook client ID, client secret, and optional redirect URL and scopes.
import { Facebook } from '@effectra/third-party';

const facebook = new Facebook('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET', 'YOUR_REDIRECT_URL', ['email']);
  1. Generate the authorization URL to redirect the user for authentication:
const authUrl = facebook.getAuthURL();
  1. Redirect the user to the generated authorization URL. After successful authentication, Facebook will redirect the user back to the specified redirect URL with an authorization code.

  2. Exchange the authorization code for an access token:

const code = '...'; // The authorization code obtained from the Facebook redirect
const accessToken = await facebook.getAccessToken(code);
  1. Use the access token to retrieve user information:
const user = await facebook.getUser(accessToken);

Google

To use the Google OAuth functionality, follow these steps:

  1. Create an instance of the Google class by providing your Google client ID, client secret, and optional redirect URL and scopes.
import { Google } from '@effectra/third-party';

const google = new Google('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET', 'YOUR_REDIRECT_URL', ['profile', 'email']);
  1. Generate the authorization URL to redirect the user for authentication:
const authUrl = google.getAuthURL();
  1. Redirect the user to the generated authorization URL. After successful authentication, Google will redirect the user back to the specified redirect URL with an authorization code.

  2. Exchange the authorization code for an access token:

const code = '...'; // The authorization code obtained from the Google redirect
const accessToken = await google.getAccessToken(code);
  1. Use the access token to retrieve user information:
const user = await google.getUser(accessToken);

OAuthServiceInterface

The OAuthServiceInterface is an interface that defines the contract for an OAuth service. It provides methods for retrieving configuration, authorization URL, access token, and user data from an OAuth service.

Usage

To use this interface, you need to create a class that implements it and provides the necessary functionality. Here's an example of how you can implement the OAuthServiceInterface:

class MyOAuthService implements OAuthServiceInterface {
    // Implement the methods defined in the interface
}

In the above example, you need to replace the placeholder methods with your actual implementation based on the OAuth service you are integrating with.

Method Overview

getConfig(): any

This method returns the configuration object for the OAuth service.

getAuthURL(): string

This method returns the authorization URL for the OAuth service.

getAccessToken(code: string): Promise<string>

This method retrieves the access token for the OAuth service using the authorization code provided as a parameter.

getUser(token: string): Promise<any | null>

This method retrieves the user data from the OAuth service using the access token provided as a parameter. It returns an object containing user data or null if the operation is unsuccessful.

License

This library is open source and available under the MIT License.

Contribution

Contributions are welcome! If you encounter any issues or have suggestions for improvements, please feel free to open an issue or submit a pull request.

Credits

This library is developed and maintained by Effectra. You can find more information about us on our website: www.effectra.com

Contact

For any inquiries or questions, you can reach us at [email protected]