https://github.com/royanger/passport-bungie
Strategy for Passport to authenticate against the Bungie Oauth endpoints.
https://github.com/royanger/passport-bungie
authentication destiny2 destiny2api nodejs oauth2 passportjs
Last synced: about 1 month ago
JSON representation
Strategy for Passport to authenticate against the Bungie Oauth endpoints.
- Host: GitHub
- URL: https://github.com/royanger/passport-bungie
- Owner: royanger
- License: mit
- Created: 2022-06-23T06:32:30.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-25T22:59:11.000Z (about 4 years ago)
- Last Synced: 2025-03-08T04:05:46.989Z (over 1 year ago)
- Topics: authentication, destiny2, destiny2api, nodejs, oauth2, passportjs
- Language: JavaScript
- Homepage:
- Size: 43.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Passport-Bungie
[Passport](http://passportjs.org/) strategy for authenticating with [Bungie](https://www.bungie.net/)
using the OAuth 2.0 API. This package was adopted from Fred Chien's
excellent [passport-github2](https://github.com/cfsghost/passport-github)
Strategy.
This module lets you authenticate using Bungie in your Node.js applications.
By plugging into Passport, Bungie authentication can be easily and
unobtrusively integrated into any application or framework that supports
[Connect](http://www.senchalabs.org/connect/)-style middleware, including
[Express](http://expressjs.com/).
## Installation
```shell
$ npm install passport-bungie
```
## Usage
### Configure Strategy
The Bungie authentication strategy authenticates users using a [Bungie
application](https://www.bungie.net/en/Application) 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
client ID, client secret, an API Key, and callback URL.
### IMPORTANT NOTE
Bungie requires the callback URL you set in the application to use https.
You can not use `http://localhost` even in development. You app, even in
development, must use https. You can solve this however you like. The
solution I found with the least friction was [ngrok](https://ngrok.com/).
You can use a free account for development and easily setup a proxy.
```javascript
passport.use(
new GitHubStrategy(
{
clientID: BUNGIE_CLIENT_ID,
clientSecret: BUNGIE_CLIENT_SECRET,
callbackURL: 'https://127.0.0.1:3000/auth/bungie/callback',
customHeaders: { 'X-API-KEY': BUNGIE_APIKEY },
},
function (accessToken, refreshToken, profile, done) {
User.findOrCreate({ bungie: memberhipId }, function (err, user) {
return done(err, user);
});
}
)
);
```
#### Authenticate Requests
Use `passport.authenticate()`, specifying the `'bungie'` strategy, to
authenticate requests.
For example, as route middleware in an [Express](http://expressjs.com/)
application:
```javascript
app.get('/auth/bungie', passport.authenticate('bungie'));
app.get(
'/auth/bungie/callback',
passport.authenticate('bungie', { failureRedirect: '/login' }),
function (req, res) {
// Successful authentication, redirect home.
res.redirect('/');
}
);
```
## Examples
For a complete, working example, refer to the [login example](https://github.com/cfsghost/passport-github/tree/master/examples/login).
## Tests
```shell
$ npm install --dev
$ make test
```
[](http://travis-ci.org/cfsghost/passport-github)
## Credits
- [Jared Hanson](http://github.com/jaredhanson)
- [Fred Chien](http://github.com/cfsghost)
## License
[The MIT License](http://opensource.org/licenses/MIT)
Copyright (c) 2011-2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>