@scitedotai/passport-mendeley v1.0.0
passport-mendeley
Inspired by passport-orcid
Passport strategy for authenticating with Mendeley using the OAuth 2.0 API.
This module lets you authenticate using Mendeley in your Node.js applications using Passport and then use the tokens provided by the package to interact with Mendeley's API
See Contributing for instructions on how to contribute to this project.
Install
$ npm install passport-mendeley
Usage
Register your application credentials
Before using passport-mendeley
, you must register an application with Mendeley. If you have not already done so, a new project can be created using Mendeley's developer tools. Once registered, your application will be issued a client ID and client secret, which need to be provided to the strategy. You will also need to configure a redirect URI which matches the route in your application. The client secret is generated when by clicking Generate Secret
on register and the client ID will be avaliable after registering in the ID column of My Applications
Configure Strategy
The Mendeley authentication strategy authenticates users using a Mendeley account and OAuth 2.0 tokens. The client ID and secret obtained when creating an application are supplied as options when creating the strategy. The strategy also requires a verify
callback, which receives the access token and optional refresh token, as well as params
which contains the authenticated user's Mendeley token information. The verify
callback must call done
providing a user to complete authentication.
var MendeleyStrategy = require('passport-mendeley').Strategy;
passport.use(new MendeleyStrategy({
clientID: MENDELEY_CLIENT_ID,
clientSecret: MENDELEY_CLIENT_SECRET,
callbackURL: "http://www.example.com/auth/mendeley/callback"
}, async function (accessToken, refreshToken, params, profile, done) {
// `profile` is empty as Mendeley has no generic profile URL,
// so populate the profile object from the api instead
const { data: profileData } = await axios.get('https://api.mendeley.com/profiles/me', {
headers: {
Authorization: 'Bearer ' + accessToken,
'Content-Type': 'application/json'
}
})
// Example call to mendeley to get your papers.
const { data: papers } = await axios.get('https://api.mendeley.com/documents', {
headers: {
Authorization: 'Bearer ' + accessToken,
'Content-Type': 'application/json'
}
})
profile = { email: profileData.email, papers }
return done(null, profile)
}));
Authenticate Requests
Use passport.authenticate()
, specifying the 'mendeley'
strategy, to authenticate requests.
For example, as route middleware in an Express application:
app.get('/auth/mendeley',
passport.authenticate('mendeley'));
app.get('/auth/mendeley/callback',
passport.authenticate('mendeley', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});
Example
Developers using the popular Express web framework can refer to an example as a starting point for their own web applications.
3 years ago