コード例 #1
0
ファイル: grant.js プロジェクト: Gcagny/exemple-se
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;
  }
}
コード例 #2
0
ファイル: oauth.js プロジェクト: TigerND/steemit.com
 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);
             }
         });
 });
コード例 #3
0
ファイル: index.js プロジェクト: davidlago/fitbit-dashboard
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});
    });
});
コード例 #4
0
    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;
      }
    });
コード例 #5
0
ファイル: oauth.js プロジェクト: TigerND/steemit.com
 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);
             }
         });
 });
コード例 #6
0
ファイル: app.js プロジェクト: dstnation/grant
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))
        })
      })
  }
})
コード例 #7
0
ファイル: Providers.js プロジェクト: OwenCalvin/strapi
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;
  }
};
コード例 #8
0
ファイル: Providers.js プロジェクト: asafbiton96/strapi
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;
  }
};