Passport Yahoo authentication strategy using OAuth2 tokens
npm install passport-yahoo-oauth-tokenverify callback, which
cb providing a user, as well as
options specifying an app ID and app secret.
js
const YahooOauthTokenStrategy = require('passport-yahoo-oauth-token');
// import YahooOauthTokenStrategy from 'passport-yahoo-oauth-token';
passport.use(
new YahooOauthTokenStrategy(
{
clientID: YAHOO_CLIENT_ID,
clientSecret: YAHOO_CLIENT_SECRET,
},
(accessToken, refreshToken, profile, cb) => {
User.findOrCreate({ yahooId: profile.id }, (error, user) => {
return done(error, user);
});
},
),
);
`
$3
Use passport.authenticate(), specifying the 'yahoo-oauth-token' strategy, to authenticate requests.
`js
app.post('/auth/yahoo/token', passport.authenticate('yahoo-oauth-token'), (req, res) => {
// do something with req.user
res.send(req.user ? 200 : 401);
});
`
$3
Clients can send requests to routes that use passport-yahoo-oauth-token authentication using query parms, body, or HTTP headers. Clients will need to transmit the code (Authorization Code) or access_token, provided by yahoo api when client successfully logs in and approves the app.
Options
| Field | Description | Default Value |
| ----------------- | -------------------------------- | ----------------------------------------------- |
| clientID | Yahoo's client id | (required) |
| clientSecret | Yahoo's client secret | (required) |
| tokenURL | Yahoo's oauth2 token url | https://api.login.yahoo.com/oauth2/request_auth |
| profileURL | Yahoo's scope profile url | https://api.login.yahoo.com/openid/v1/userinfo |
| authorizationURL | Yahoo's oauth2 authorization url | https://api.login.yahoo.com/oauth2/get_token |
| passReqToCallback | Yahoo's oauth2 authorization url | https://api.login.yahoo.com/oauth2/get_token |
| accessTokenField | Param containing access token | access_token |
| accessCodeField | Param containing code | code |
| refreshTokenField | Param containing refresh token | refresh_token |
Profile Example
`js
{
birthdate: "xxxx",
email: "xxxx@yahoo.com",
email_verified: true,
family_name: "xxxx",
gender: "xxxx",
given_name: "xxxx",
locale: "en-US",
name: "xxxx",
nickname: "xxxx",
picture: "https://s.yimg.com/ag/images/default_user_profile_pic_192sq.jpg",
profile_images: {
image128: "https://s.yimg.com/ag/images/default_user_profile_pic_128sq.jpg",
image192: "https://s.yimg.com/ag/images/default_user_profile_pic_192sq.jpg",
image32: "https://s.yimg.com/ag/images/default_user_profile_pic_32sq.jpg",
image64: "https://s.yimg.com/ag/images/default_user_profile_pic_64sq.jpg",
},
sub: "xxxx",
_json: {},
_raw: {},
}
``