Selling Point
This package can be used to get Twitter user access token using oAuth 1.0 flow.
Implements a Client-Side flow for login with twitter, similar to one provided by Facebook and Google.
This can be used to get User Access Token to make API calls to Twitter where User Context is required
Installation:
-
Clone as a Git repository
git clone https://github.com/knitesh/twitter-login.git
-
Install as a node_module
npm i twitter-login --save
OR
npm install twitter-login --save
Usage
To start twitter Login process
await twitter.login()
To get user details
await twitter.callback(auth, tokenSecret)
Sample Express app
const express = require('express')
const session = require('express-session')
const TwitterLogin = require('twitter-login')
const app = express()
const port = 9000
const sessionConfig = {
user: null,
tokenSecret: null,
secret: 'keyboard cat',
}
app.use(session(sessionConfig))
const twitter = new TwitterLogin({
consumerKey: '<your api key>',
consumerSecret: '<your api secret key>',
callbackUrl: 'http://localhost:$port/twitter/auth/userToken',
})
app.get('/twitter/auth', async (req, res) => {
try {
const result = await twitter.login()
req.session.tokenSecret = result.tokenSecret
res.redirect(result.url)
} catch (err) {
res.send('Twitter login error.')
}
})
app.get('/twitter/auth/userToken', async (req, res) => {
try {
const oAuthParam = {
oauth_token: req.query.oauth_token,
oauth_verifier: req.query.oauth_verifier,
}
const userInfo = await twitter.callback(
oAuthParam,
req.session.tokenSecret,
)
delete req.session.tokenSecret
req.session.user = userInfo
res.redirect('/')
} catch (err) {
res.send('Twitter login error.')
}
})
app.get('/', (req, res) => {
const _user = req.session && req.session.user
if (_user) {
res.send(JSON.stringify(_user))
} else {
res.send('Login with Twitter -http://localhost:9000/twitter/auth')
}
})
app.listen(port, () => {
console.log('Example app listening at http://localhost:${port}')
})