Socket
Socket
Sign inDemoInstall

async-twitter-login

Package Overview
Dependencies
1
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-twitter-login

Simple Twitter login, without much of the bullshit. and promises... who doesn't like them?


Version published
Maintainers
1
0

Weekly downloads

Readme

Source

async-twitter-login

license version npm bundle size downloads

Simple Twitter login, without much of the bullshit. and promises... who doesn't like them?

Features

  • Twitter OAuth lightweight wrap.
  • Promises. 🎈
  • Readable Objects.

All this in < 4kb, what else do you need? ✨

Install

$ npm i async-twitter-login

Usage

We will configure two routes in our web server, auth/login and auth/callback can have any name :P

Initialization

We import and instantiate, you will need your consumer key and your comsumer secret... both are obtained when creating an application from the Twitter Developer Portal.

Finally you will need your callback url, as we said before it would be https://example.com/auth/callback.

// CommonJS
const { AsyncTwitterLogin } = require('async-twitter-login')

// EcmaScript
import { AsyncTwitterLogin } from 'async-twitter-login'

const twitterLogin = new AsyncTwitterLogin({
  consumerKey: 'your-consumer-key',
  consumerSecret: 'your-consumer-secret',
  callbackUrl: 'https://example.com/auth/callback'
})

Login

From our auth/login path we call the request() method and save in a safe place tokenSecret to use it later.

app.get('/auth/login', async (req, res) => {
  try {
    const { token, tokenSecret, redirectUrl } = await twitterLogin.request()
    
    // Save the token secret in a safe place
    req.session.tokenSecret = tokenSecret

    // Redirect to Twitter to authorize the application
    res.redirect(redirectUrl)
  } catch (err) {
    // Handle errors
  }
})

Callback

If the user completes the authorization from twitter, he will be redirected to his auth/callback path together with oauth_token and oauth_verifier as query parameters in the URL, they are accessed with req.query.

We call the callback() method from our auth/callback path and pass the parameters to it along with the tokenSecret that we saved in the previous step.

This method will return a user object. 🧔

app.get('/auth/callback', async (req, res) => {
  try {
    const { oauth_token: token, oauth_verifier: verifier } = req.query
    const tokenSecret = req.session.tokenSecret
    const user = await twitterLogin.callback(token, tokenSecret, verifier)

    // Delete the token secret from the session
    delete req.session.tokenSecret

    // The user object is a readable object with the user's data.
    // user = {
    //   id,
    //   userName,
    //   token,
    //   tokenSecret
    // }
    req.session.user = user

    // Redirect to the home page
    res.redirect('/')
  } catch (err) {
    // Handle errors
  }
})

License

MIT License © 2021- Brian Fernandez.

Keywords

FAQs

Last updated on 30 Nov 2021

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