function getProfile(provider, access_token, callback) { switch (provider) { case 'facebook': facebook.query().get('me?fields=name,email').auth(access_token).request(function (err, res, body) { if (err) { callback(err); } else { callback(null, { username: body.name, email: body.email }); } }); break; case 'github': github.query().get('user').auth(access_token).request(function (err, res, body) { if (err) { callback(err); } else { callback(null, { username: body.login, email: body.email }); } }); break; case 'google': google.query('plus').get('people/me').auth(access_token).request(function (err, res, body) { if (err) { callback(err); } else { callback(null, { username: body.displayName, email: body.emails[0].value }); } }); break; default: callback({ message: 'Unknown provider.' }); break; } }
return new Promise((resolve, reject) => { facebook.query() .get('me?fields=name,email,location,picture{url},verified') .auth(access_token) .request((err, res) => { if (err) { reject(err); } else { resolve(res.body); } }); });
router.get('/profile', function(req, res) { fitbit .query() .get('user/-/profile') .auth( req.session.grant.response.access_token, req.session.grant.response.access_secret ) .request(function(err, res2, body) { // Render user profile res.render('profile', {profile: body.user}); }); });
let myPromise = new Promise((resolve, reject) => { let providerInstance = new Purest({ provider: provider }); const handleReponse = (err, res, body) => { if (err) { console.log('getUserCredentials: request error: ', err); reject(err); } console.log('getUserCredentials: body: ', body); let user = {}; switch (provider) { case 'github': user = getUserFromGithubResponse(body); break; case 'google': user = getUserFromGoogleResponse(body); break; } user.provider = provider; resolve(user); }; switch (provider) { case 'google': providerInstance.get('https://www.googleapis.com/userinfo/v2/me', { auth: { bearer: token }, headers: { 'User-Agent': 'SlideWiki' } }, handleReponse); break; default: providerInstance.query() .select('user') .auth(token) .headers({ 'User-Agent': 'SlideWiki' }) .request(handleReponse); break; } });
return new Promise((resolve, reject) => { reddit.query() .get('https://oauth.reddit.com/api/v1/me.json?raw_json=1') .headers({ Authorization: `bearer ${access_token}`, 'User-Agent': 'Steembot/1.0 (+http://steemit.com)', Accept: 'application/json', 'Content-type': 'application/json' }) .request((err, res) => { if (err) { reject(err); } else { delete res.body.features; resolve(res.body); } }); });
app.get('/handle_facebook_callback', function (req, res) { if (req.query.error) { console.log(req.query.error) res.end(JSON.stringify(req.query.error)) } else { console.log(req.session.grant.response) // get the user's profile var facebook = new Purest({provider: 'facebook'}) facebook.query() .get('me') .auth(req.session.grant.response.access_token) .request(function (err, _res, body) { // remove the session data req.session.destroy(function () { // remove the cookie res.clearCookie('grant') // generate JWT - encode the user's Facebook id and name in it var token = jwt.sign({id: body.id, name: body.name}) res.end(JSON.stringify({jwt: token}, null, 2)) }) }) } })
const getProfile = async (provider, query, callback) => { const access_token = query.access_token || query.code || query.oauth_token; const grant = await strapi.store({ environment: '', type: 'plugin', name: 'users-permissions', key: 'grant' }).get(); switch (provider) { case 'facebook': { const facebook = new Purest({ provider: 'facebook' }); facebook.query().get('me?fields=name,email').auth(access_token).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.name, email: body.email }); } }); break; } case 'google': { const google = new Purest({ provider: 'google' }); google.query('plus').get('people/me').auth(access_token).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.displayName || body.emails[0].value, email: body.emails[0].value }); } }); break; } case 'github': { const github = new Purest({ provider: 'github', defaults: { headers: { 'user-agent': 'strapi' } } }); request.post({ url: 'https://github.com/login/oauth/access_token', form: { client_id: grant.github.key, client_secret: grant.github.secret, code: access_token } }, (err, res, body) => { github.query().get('user').auth(body.split('&')[0].split('=')[1]).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.login, email: body.email }); } }); }); break; } case 'twitter': { const twitter = new Purest({ provider: 'twitter', key: grant.twitter.key, secret: grant.twitter.secret }); twitter.query().get('account/verify_credentials').auth(access_token, query.access_secret).qs({screen_name: query['raw[screen_name]'], include_email: 'true'}).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.screen_name, email: body.email }); } }); break; } default: callback({ message: 'Unknown provider.' }); break; } };
const getProfile = async (provider, query, callback) => { const access_token = query.access_token || query.code || query.oauth_token; const grant = await strapi.store({ environment: '', type: 'plugin', name: 'users-permissions', key: 'grant' }).get(); switch (provider) { case 'discord': { const discord = new Purest({ provider: 'discord', config: { 'discord': { 'https://discordapp.com/api/': { '__domain': { 'auth': { 'auth': {'bearer': '[0]'} } }, '{endpoint}': { '__path': { 'alias': '__default' } } } } } }); discord.query().get('users/@me').auth(access_token).request((err, res, body) => { if (err) { callback(err); } else { // Combine username and discriminator because discord username is not unique var username = `${body.username}#${body.discriminator}`; callback(null, { username: username, email: body.email }); } }); break; } case 'facebook': { const facebook = new Purest({ provider: 'facebook' }); facebook.query().get('me?fields=name,email').auth(access_token).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.name, email: body.email }); } }); break; } case 'google': { const google = new Purest({ provider: 'google' }); google.query('plus').get('people/me').auth(access_token).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.emails[0].value.split("@")[0], email: body.emails[0].value }); } }); break; } case 'github': { const github = new Purest({ provider: 'github', defaults: { headers: { 'user-agent': 'strapi' } } }); request.post({ url: 'https://github.com/login/oauth/access_token', form: { client_id: grant.github.key, client_secret: grant.github.secret, code: access_token } }, (err, res, body) => { github.query().get('user').auth(body.split('&')[0].split('=')[1]).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.login, email: body.email }); } }); }); break; } case 'microsoft': { const microsoft = new Purest({ provider: 'microsoft', config:{ 'microsoft': { 'https://graph.microsoft.com': { '__domain': { 'auth': { 'auth': {'bearer': '[0]'} } }, '[version]/{endpoint}': { '__path': { 'alias': '__default', 'version': 'v1.0' } } } } } }); microsoft.query().get('me').auth(access_token).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.userPrincipalName, email: body.userPrincipalName }); } }); break; } case 'twitter': { const twitter = new Purest({ provider: 'twitter', key: grant.twitter.key, secret: grant.twitter.secret }); twitter.query().get('account/verify_credentials').auth(access_token, query.access_secret).qs({screen_name: query['raw[screen_name]'], include_email: 'true'}).request((err, res, body) => { if (err) { callback(err); } else { callback(null, { username: body.screen_name, email: body.email }); } }); break; } default: callback({ message: 'Unknown provider.' }); break; } };