OAuth 2.0 authentication strategy for the Genius API
npm install passport-geniusOAuth 2.0 authentication strategy for Genius.
This module extends passport-oauth2. It enables users to sign into third-party websites and apps using their Genius account.
Developers can plug this library into any Node.js application or framework that supports Connect-style middleware, including Express. The Genius strategy serves as a user authentication method for social login, which eliminates the need to manage usernames and passwords.
$ npm install passport-genius
#### Register Application
Before your application can make use of Genius's authentication system, you must first register your application. Visit the Genius API Client management page and create an API client.
After registration, Genius will issue your client ID and secret, which are used to identify your app. You will also need to configure a redirect URI, which matches the callback route in your application.
#### Configure Strategy
Once you've registered your application, the strategy
needs to be configured with your application's client ID and secret, along with
its OAuth 2.0 redirect endpoint.
``js
const passport = require('passport');
const GeniusStrategy = require('passport-genius');
passport.use(new GeniusStrategy({
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: "http://0.0.0.0:8080/auth/genius/callback",
},
function(accessToken, refreshToken, profile, cb) {
cb(null, profile);
}
));
`
#### Scopes
Your application can request one or more scopes using the scope option. If no scope is provided, the Genius strategy defaults to the me scope. Use a string array to supply multiple scopes.
`js`
passport.use(new GeniusStrategy({
scope: 'create_annotation',
// scope: ['manage_annotation', 'vote'],
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
...
#### Authenticate Requests
Use passport.authenticate(), specifying the 'genius' strategy, to
authenticate requests.
For example, as route middleware in an Express
application:
`js
app.get('/auth/example',
passport.authenticate('genius'));
app.get('/auth/example/callback',
passport.authenticate('genius', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});
``