Passport-Venmo-OAuth
Passport strategies for authenticating with Venmo using OAuth 2.0.
This module lets you authenticate using Venmo in your Node.js applications. By plugging into Passport, Venmo authentication can be easily and unobtrusively integrated into any application or framework that supports Connect-style middleware, including Express.
Install
$ npm install passport-venmo
Usage of OAuth 2.0
Configure Strategy
The Venmo OAuth 2.0 authentication strategy authenticates users using a Venmo
account and OAuth 2.0 tokens. The strategy requires a verify callback, which
accepts these credentials and calls done providing a user, as well as
options specifying a clientID, clientSecret, and callbackURL.
var VenmoStrategy = require('passport-venmo').Strategy;
passport.use(new VenmoStrategy({
clientID: Venmo_CLIENT_ID,
clientSecret: Venmo_CLIENT_SECRET,
callbackURL: "http://127.0.0.1:3000/auth/venmo/callback"
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({ VenmoId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
Authenticate Requests
Use passport.authenticate(), specifying the 'venmo' strategy, to
authenticate requests.
For example, as route middleware in an Express application:
app.get('/auth/venmo',
passport.authenticate('venmo'));
app.get('/auth/venmo/callback',
passport.authenticate('venmo', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});
Scope
By default, upon making a HTTP GET request to:
application:
https://api.venmo.com/v1/me?access_token=token_goes_here
Venmo will return a JSON response
For example:
{
"data":{
"balance": null,
"user":{
"username":"delavara",
"first_name":"Cody",
"last_name":"De La Vara",
"display_name":"Cody De La Vara",
"is_friend":false,
"friends_count":165,
"about":"So happy!",
"email":null,
"phone":null,
"profile_picture_url":"https://venmopics.appspot.com/u/v3/s/6ecc7b37-5c4a-49df-b91e-3552f02dc397",
"id":"1088551785594880949",
"date_joined":"2013-02-10T21:58:05"
}
}
};
The balance, email, and phone fields are 'null'. Venmo requires developers to specify that their applications require this informations in scopes.
For example:
app.get('/auth/venmo', passport.authenticate('venmo', {scope: ['access_balance', 'access_phone', 'access_email']}));
If you intend on making payments on a user's behalf, the make_payments scope must be specified as shown above. Scroll to the bottom of this page to see the full list of scopes.
Examples
- For a complete, working example, refer to the login and pay example
- Example uses MongoDB, make sure you run mongod in the background
Credits
License
Copyright (c) 2013-2014