rest-oauth2
v1.1.0
Published
No more passport, just use simple REST API for OAuth2.
Downloads
10
Readme
Rest OAuth2
No more passport, just use simple REST API for OAuth2.
To use client side is not recommended.
Typescript supported.
Contents
Supported providers
- PayPal
Other providers will be updated soon.
Installing
Using npm:
$ npm install rest-oauth2
Using yarn:
$ yarn add rest-oauth2
Usages
This example uses express
import express from 'express'
import { GoogleOAuth2 } from 'rest-oauth2'
const app = express()
const googleOAuth2 = new GoogleOAuth2({
client_id: 'CLIENT_ID',
client_secret: 'CLIENT_SECRET',
redirect_uri: 'http://api.example.com/login/google/return',
})
app.get('/login/google', (req, res) => {
const url = googleOAuth2.GenerateUrl()
res.redirect(url)
})
app.get('/login/google/return', async (req, res) => {
const { code } = req.query
const { access_token } = await googleOAuth2.GetAccessToken(code)
const userinfo = await googleOAuth2.GetProfile(access_token)
// simpliy get user information!
const email = userinfo.email
...
})
API
import { GoogleOAuth2, FacebookOAuth2, PaypalOAuth2 } from 'rest-oauth2'
GoogleOAuth2
const googleOAuth2 = new GoogleOAuth2({
client_id: '',
client_secret: '',
redirect_uri: '',
})
GenerateUrl()
const url = googleOAuth2.GenerateUrl()
GetAccessToken()
const data = await googleOAuth2.GetAccessToken(code)
{
"access_token": "",
"scope": "",
"id_token": "",
"token_type": "Bearer",
"expires_in": 3938
}
GetProfile()
const userinfo = await googleOAuth2.GetProfile(access_token)
{
"id": "",
"email": "",
"name": "",
"given_name": "",
"family_name": "",
"picture": "",
"locale": "en",
"verified_email": true
}
FacebookOAuth2
const facebookOAuth2 = new FacebookOAuth2({
client_id: '',
client_secret: '',
redirect_uri: '',
})
GenerateUrl()
const url = facebookOAuth2.GenerateUrl()
GetAccessToken()
const data = await facebookOAuth2.GetAccessToken(code)
{
"access_token": "",
"token_type": "Bearer",
"expires_in": 39312
}
GetProfile()
const userinfo = await facebookOAuth2.GetProfile(access_token)
{
"id": "",
"name": "",
"first_name": "",
"last_name": "",
"email": ""
}
PaypalOAuth2
Paypal Rest API supports production and sandbox environments.
You should set different values by the environments.
const paypalOAuth2 = new PaypalOAuth2({
client_id: '',
client_secret: '',
redirect_uri: '',
production: true,
})
GenerateUrl()
const url = paypalOAuth2.GenerateUrl()
GetAccessToken()
const data = await paypalOAuth2.GetAccessToken(code)
{
"access_token": "",
"refresh_token": "",
"token_type": "Bearer",
"nonce": "",
"expires_in": 43123
}
GetProfile()
const userinfo = await paypalOAuth2.GetProfile(access_token)
{
"user_id": "",
"payer_id": "",
"name": "",
"locality": {
"locality": "",
"region": "",
"country": ""
},
"verified_account": true,
"emails": [
{
"value": "",
"primary": true,
"confirmed": true
},
{
"value": "",
"primary": false,
"confirmed": true
}
// ...
]
}