Example #1
0
 /*
   Makes a call to the Google+ API to retrieve the user's basic
   profile info. An authorized OAuth2 client is required.
 */
 function getUserProfile(client, cb) {
   var plus = googleapis.plus('v1');
   plus.people.get({
     userId: 'me',
     auth: client
   }, cb);
 }
exports.createFile = function(req, res) {

	var plus = google.plus('v1');
	var drive = google.drive('v2');
	var OAuth2 = google.auth.OAuth2;
	var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
	oauth2Client.setCredentials({
		access_token: req.user.additionalProvidersData.google.accessToken,
		refresh_token: req.user.additionalProvidersData.google.refreshToken
	});

	oauth2Client.refreshAccessToken(function(err, tokens) {
		// your access_token is now refreshed and stored in oauth2Client
		// store these new tokens in a safe place (e.g. database)
		//console.log('!!!!', tokens);
		oauth2Client.setCredentials(tokens);
		// insertion example
		drive.files.insert({
			resource: {
				title: 'refreshToken Folder',
				mimeType: 'application/vnd.google-apps.folder'
			},
			auth: oauth2Client
		}, function(err, response) {
			if (err) {
				console.log('[create file] - An error occured', err);
				return;
			}
			res.jsonp(response);
		});
	});
};
Authentication.prototype.getUserInfo = function(client, next) {
	var plus = googleapis.plus('v1');
	return plus.people.get({
		userId: 'me',
		auth: client
	}, next);
};
Example #4
0
app.post('/authenticate', function (req, res) {
  var plus = google.plus('v1');
  var OAuth2 = google.auth.OAuth2;
  var client_id = '273207854014-32vo8nirrr75jti027sub8d92secgccc.apps.googleusercontent.com';
  var client_secret = '_ejvUbbHFfaxgIUeLAcr-bj_';
  var redirect_url = 'postmessage';
  var oauth2Client = new OAuth2(client_id, client_secret, redirect_url);
  var code = req.body.authResult;
  oauth2Client.getToken(code, function(err, tokens) {
      if(err)console.log(err);
      oauth2Client.setCredentials(tokens); 
      plus.people.get({ userId: 'me', auth: oauth2Client }, function(err, response) {
        if (err) console.log(err);
        response.accesstoken = code;
        var token = jwt.sign(response, secret, { expiresInMinutes: 60*5 });        
        db.collection('users').update({
          googleid: response.id
        }, {$set: {googleid: response.id, google: response}}, {upsert:true}).then(function(err){
          if (err) console.log(err);
        });             
        db.collection('users').findOne({googleid:response.id}).then(function(user){
          res.json({ response: user, token: token});  
        });
      });  
  });
});
exports.gsGet = function(req, res){
	//res.jsonp(req.user.additionalProvidersData.google.accessToken);
	//res.jsonp(req.user);
	var google = require('googleapis');
	var OAuth2 = google.auth.OAuth2;
	var plus = google.plus('v1');
	var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
	oauth2Client.setCredentials({
		access_token: req.user.additionalProvidersData.google.accessToken,
		refresh_token: req.user.additionalProvidersData.google.refreshToken,
		expiry_date:(new Date()).getTime()*1000
	});
	oauth2Client.refreshAccessToken(function(err, tokens) {
		// your access_token is now refreshed and stored in oauth2Client
		// store these new tokens in a safe place (e.g. database)
		console.log('!!!!', tokens);
		oauth2Client.setCredentials(tokens);
		plus.people.get({ userId: 'me', auth: oauth2Client }, function(err, profile) {
				if (err) {
					console.log('[geGet]-An error occured', err);
					return;
				}
				res.jsonp(profile);
			});
	});
	//plus.people.get({ userId: 'me', auth: oauth2Client }, function(err, profile) {
	//		if (err) {
	//			console.log('An error occured', err);
	//			return;
	//		}
	//		res.jsonp(profile);
	//	});
}
    googleRouter.get("/tokens", function(req, res) {
        var code = req.query.code;
        var plus = googleapis.plus('v1');
        // console.log(code);
        oauth2Client.getToken(code, function(err, tokens) {
            if (err) {
                console.log(err);
                res.send(err);
                return;
            }
            // console.log(tokens);

// EJEMPLO DE OBTENER LOS DATOS DE GOOGLE + DEL USUARIO QUE HA HECHO LOGIN.

            oauth2Client.setCredentials(tokens);
            googleapis.options({
                auth: oauth2Client
            });
            plus.people.get({
                userId: 'me',
                auth: oauth2Client
            }, function(err, response) {
                if (err) {
                    console.log(err);
                    res.send(err);
                    return;
                }
                console.log(" ------------- Detalles de usuario ---------------");
                console.log("id: " + response.id);
                console.log("Name: " + response.displayName);
                console.log("Image url: " + response.image.url);
            });


// EJEMPLO DE BÚSQUEDA DE UN VIDEO EN YOUTUBE.

            var youtube = googleapis.youtube({
                version: 'v3',
                auth: oauth2Client
            });

            youtube.search.list({
                part: 'snippet',
                q: 'rubius',
                maxResults: 1
            }, function(err, response) {
                console.log("----------- Test buscar video ------------");
                if (err) {
                    console.log(err);
                    res.send(err);
                    return;
                }
                console.log(response.items);
            });


            res.send("check node console for access tokens and personal information");
        });
    });
    return new Promise((resolve, reject) => {
      var plus = google.plus({version: 'v1', auth: that.client});
      plus.people.get({'userId': 'me'}, function(err, result) {
        if (err) {
          reject(err);
        }

        resolve(result.id);
      });
    });
Example #8
0
        oauth2client.getToken(code, function(err, tokens){
            oauth2client.setCredentials(tokens);
            google.options({ auth: oauth2client });

            req.session.plus = google.plus({ version: 'v1' });
            req.session.drive = google.drive({ version: 'v2' });
            req.session.admin = google.admin({ version: 'directory_v1' });
            req.session.plus.people.get({ userId: 'me' }, function(err, user){
                req.session.email = user.emails[0].value;
                req.session.admin.users.get({userKey: req.session.email}, function(err, userinfo){
                    req.session.username =  userinfo.name.givenName;
                    req.session.isLoggedIn = true;
                    req.isAdmin = true;
                    res.redirect('/');
                });
            });

        });
Example #9
0
 oauth2_client.getToken(auth_code, function(err, tokens) {
   if (err) {
     res.send(500, util.inspect(err));
   } else {
     oauth2_client.setCredentials(tokens);
     google.plus('v1').people.get({ userId: 'me' }, function(err, response) {
       if (err) {
         console.log(err);
         res.send(500, err);
       } else {
         console.log(response);
         user_list.createUser({
           id: response.id,
           google_auth: tokens,
         });
         saveSession(res, next, response.id);
       }
     });
   }
 });
Example #10
0
Strategy.prototype.loadProfile = function(context, callback) {
  if (context.fetchProfile) {
    var plus = googleapis.plus('v1');
    var auth = null;
    if (context.credentials.access_token) {
      auth = new googleapis.auth.OAuth2(context.clientId, context.clientSecret);
      auth.credentials = context.credentials;
    } else {
      auth = context.apiKey;
    }
    var request = plus.people.get({ userId: context.profile.id, auth: auth }, function(err, data) {
      if(!err) {
        context.profile = extend(context.profile, data);
      }
      callback(err, context);
    });
  } else {
    callback(null, context);
  }
};
Example #11
0
 getUserProfile: function () {
   let that = this;
   let gmail = google.gmail('v1');
   let plus = google.plus('v1');
   let userObj = {};
   return new Promise(function (resolve) {
     return gmail.users.getProfile({ userId: 'me', auth: that.oauth2Client }, function (err, user) {
       userObj.email = user.emailAddress;
       return resolve();
     });
   })
   .then(function () {
     return new Promise(function (resolve) {
       return plus.people.get({ userId: 'me', auth: oauth2Client }, function (err, response) {
         userObj.fullName = response.displayName;
         userObj.googleId = response.id;
         return resolve(userObj);
       });
     });
   });
 }
Example #12
0
var getGoogleplusUser = function (req, res, tokens) {
  debug(tokens);

  var oauth2Client = new google.auth.OAuth2(config.clientId, config.clientSecret, config.redirectUrl);
  oauth2Client.setCredentials(tokens);
  google.plus('v1').people.get({
    userId: 'me',
    auth: oauth2Client
  }, function(err, people) {
    if (!err) {
      var user = {
        id: undefined,
        name: people.displayName,
        googleId: people.id
      };
      returnHome(req, res, user);
    } else {
      console.error(err);
      res.status(500).end();
    }
  });
};
Example #13
0
 oauth2Client.getToken(code, function (err, tokens) {
     if(err) {
         console.log(err)
     } else {
         //set credentials. not entirely sure what this does but necessary for google plus
         //when a person gives access to their google calendar, we also make a request to google plus
         //with their oauth2client in order to get their email address which is then saved in the user object
         //in mongodb.
         oauth2Client.setCredentials(tokens);
         console.log("this is tokens", tokens);
         var plus = google.plus('v1');
         plus.people.get({auth: oauth2Client, userId: 'me'}, function(err, person){
             if(err){
                 console.log(err)
             } else {
                 //when a person
                 console.log("this is googleplus person object", person);
                 var tempEmail = person.emails[0].value;
                 let auth_id = JSON.parse(decodeURIComponent(req.query.state));
                 var newUser = new User({
                     token: tokens,
                     slackID: slackID, //TODO: ALSO store slackname so that you can easily add your own meetings to your calendars too
                     auth_id: auth_id.auth_id,
                     email: tempEmail,
                     pendingInvites: []
                 });
                 newUser.save()
                 .then( () => res.status(200).send("Your account was successfuly authenticated"))
                 .catch((err) => {
                     console.log('error in newuser save of connectcallback');
                     res.status(400).json({error:err});
                 })
             }
         });
     }
 });
Example #14
0
'use strict';

var google = require('googleapis'),
	mongoose = require('mongoose'),
	googleOAuth2 = google.auth.OAuth2,
	googlePlus = google.plus('v1'),
	jwt = require('jsonwebtoken');

var User = mongoose.model('User');

var config = require('../config/auth');
var authKey = config.google;

var clientGoogleOAuth2 = new googleOAuth2(authKey.clientId, authKey.secret, authKey.redirectUrl);

exports.login = function(req, res, next){
	var code = req.body.code;

	if (code) {
		clientGoogleOAuth2.getToken(code, function(err, token){
			if (err) {
				next(err);
			} else {
				clientGoogleOAuth2.setCredentials(token);
				googlePlus.people.get({
					userId: 'me',
					auth: clientGoogleOAuth2
				}, function(err, gPlusUserInfo){
					var email = gPlusUserInfo.emails[0].value;
					var username = gPlusUserInfo.displayName;
Example #15
0
	oauth2Client.getToken(data.code, function(err, tokens) {
	// Now tokens contains an access_token and an optional refresh_token. Save them.
		if(!err) {
			//lookup user
			oauth2Client.setCredentials({
				access_token: tokens.access_token,
				refresh_token: tokens.refresh_token
			});
			var plus = google.plus('v1');
			plus.people.get({ userId: 'me', auth: oauth2Client }, function(err, response) {
				if(err) {
					ret.msg +=err;
					deferred.reject(ret);
				}
				else {
					//do user import & login
					var user ={};
					//name
					if(response.name !==undefined) {
						if(response.name.givenName !==undefined) {
							user.first_name =response.name.givenName;
						}
						if(response.name.familyName !==undefined) {
							user.last_name =response.name.familyName;
						}
					}
					//gender
					if(response.gender !==undefined) {
						user.gender =response.gender;
					}
					//email
					if(response.emails !==undefined && response.emails.length >0) {
						user.email =response.emails[0].value;
					}
					
					//age: do not bother with age since we only get a "range" from google
					
					//image
					if(data.pull_pic) {
						if(response.image !==undefined && response.image.url !==undefined) {
							user._imageUrl =response.image.url;
						}
					}
					
					var vals ={
						type: 'google',
						user: user,
						socialData: {
							id: response.id,
							token: tokens.access_token,
							response_token: tokens.response_token
						}
					};
					
					vals.pic_directory =data.pic_directory;		//pass through
					
					AuthMod.socialLogin(db, vals, {})
					.then(function(retLogin) {
						deferred.resolve(retLogin);
					}, function(err) {
						deferred.reject(err);
					});
				}
			});
		}
	});
Example #16
0
'use strict';
/**
 * Created by tpineau
 */

var extend = require('extend');
var async = require("async");
var googleapis = require('googleapis');
var keys = require('./../keys.json');

var plus = googleapis.plus('v1');

var googleKey = keys.googleKey;


function statusSearch(keyword, num, opt_args, callback) {
// Fonction de recherche d'activités (statuts) sur Google+
// Informations sur les arguments optionnels (opt_args): https://developers.google.com/+/api/latest/activities/search?hl=fr
    if (typeof opt_args === 'function') {callback = opt_args; opt_args = {};}
    var args = {query: keyword, maxResults: num, auth: googleKey};
    if (opt_args.orderBy === undefined) {opt_args.orderBy = 'recent';}
    if (opt_args.pageToken === undefined) {opt_args.pageToken = null;}
    extend(args, opt_args);
    go('activities', args, callback);
}

function usersSearch(keyword, num, opt_args, callback) {
// Fonction de recherche d'utilisateurs ou de pages sur Google+
// Informations sur les arguments optionnels (opt_args): https://developers.google.com/+/api/latest/people/search?hl=fr
    if (typeof opt_args === 'function') {callback = opt_args; opt_args = {};}
    var args = {query: keyword, maxResults: num, auth: googleKey};
const path = require("path");
const fs = require("fs");
const express = require("express");
var router = module.exports = exports = new express.Router();

//데이터베이스 관련 모듈 객체
const Database = require("./sequelize");
const User = Database.User;

//google api 관련 파일
const google = require("googleapis");
var OAuth2 = google.auth.OAuth2;
var plus = google.plus("v1");

var CLIENT_INFO = path.join(__dirname, "OAuth.json");
CLIENT_INFO = JSON.parse(fs.readFileSync(CLIENT_INFO));
var CLIENT_ID = CLIENT_INFO.id;
var CLIENT_SECRET = CLIENT_INFO.secret;
var redirect_uri = "http://localhost/googleOAuth/token";
var scope = CLIENT_INFO.scope;

var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, redirect_uri);
oauth2Client.setCredentials({
	access_token : "ACCESS TOKEN HERE",
	refresh_token : "REFRESH TOKEN HERE"
});

var OAuth2url = oauth2Client.generateAuthUrl({
	access_type : "offline",
	scope : scope
});
Example #18
0
'use strict';

const google = require('googleapis');
const plus = google.plus('v1');
const OAuth2 = google.auth.OAuth2;
const oauth2Client = new OAuth2(appConfig.google_oauth.client_id,
                                appConfig.google_oauth.client_secret);

var r = new APIRoute();

r.setName('goauth');

module.exports = r;

r.setHandler((response, req, res) => co(function*(){

   var valid_request =
      req.body &&
      req.body.message &&
      req.body.message.access_token;

   if(!valid_request)
      return response.error('error_invalid_request');

   var access_token = req.body.message.access_token;

   oauth2Client.setCredentials({ access_token });

   var user_go_info = yield new Promise(resolve =>
      plus.people.get(
         { userId: 'me', auth: oauth2Client },
Example #19
0
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.render('index', {title: 'Express'});
});

var google = require('googleapis');
var OAuth2 = google.auth.OAuth2;

var CLIENT_ID = '966697304322-4pf6o516qvs4mdoug0nn263jmelj5c5u.apps.googleusercontent.com';
var CLIENT_SECRET = 'WmfqGoeL4uPd80ogRsfHNvwy';
var REDIRECT_URL = 'http://*****:*****@ds023684.mlab.com:23684/googleoauth';

var mongoDB;
MongoClient.connect(url, function (err, db) {
    mongoDB = db;
    console.log('connected');
});


router.get('/auth/google', function (req, res) {
    var scopes = [
        'https://www.googleapis.com/auth/userinfo.email',
        'https://www.googleapis.com/auth/userinfo.profile'
Example #20
0
var googleapis = require('googleapis');
var OAuth2Client = googleapis.auth.OAuth2;
var googlePlus = googleapis.plus('v1');

var oauthModel = {
	oauthClient: {
		clientId: '408604170559-njf95oknh4u687geab8io17tnrsgofrs.apps.googleusercontent.com',
		clientSecret: '3AyPNrlocn_14fJ0FiA8VLnr',
		redirectUrl: 'http://localhost:3000/googleLogin/oauth',
	},
	url: {
		scopes: [
			'https://www.googleapis.com/auth/plus.login',
            'https://www.googleapis.com/auth/userinfo.email'
		],
		accessType: 'offline',
	}
};

this.createClient = function() {
	var _m = oauthModel.oauthClient;
	return new OAuth2Client(
		_m.clientId, _m.clientSecret, _m.redirectUrl  
	);
}

this.getClientUrl = function(client) {
	var _m = oauthModel.oauthClient;
	client = client || new OAuth2Client(_m.clientId, _m.clientSecret, _m.redirectUrl);
	
	var _u = oauthModel.url;