Skip to content

Instantly share code, notes, and snippets.

@nazargulov
Created April 14, 2015 10:07
Show Gist options
  • Select an option

  • Save nazargulov/b69b86a578375c33d812 to your computer and use it in GitHub Desktop.

Select an option

Save nazargulov/b69b86a578375c33d812 to your computer and use it in GitHub Desktop.
login API method in Azure
exports.post = function(request, response) {
// Use "request.service" to access features of your mobile service, e.g.:
// var tables = request.service.tables;
// var push = request.service.push;
var access_token = request.query.access_token;
getUserInfo(request, response, access_token);
};
function getUserInfo(request, response, access_token) {
var req = require('request');
var googleAccessToken = access_token;
var url = 'https://www.googleapis.com/oauth2/v3/userinfo?access_token=' + googleAccessToken;
req(url, function (err, resp, body) {
if (err || resp.statusCode !== 200) {
console.error('Error sending data to Google API: ', err, body);
request.respond(statusCodes.INTERNAL_SERVER_ERROR, body);
} else {
try {
var userData = JSON.parse(body);
console.log('user data', userData);
response.send(statusCodes.OK, userData);
var userId = (request.user.userId === undefined) ? ("Google:" + userData.sub) : request.user.userId;
createProfile(request, response, userData, userId);
setName(request, response, userData.given_name, userId);
} catch (ex) {
console.error('Error parsing response from Google API: ', ex);
request.respond(statusCodes.INTERNAL_SERVER_ERROR, ex);
}
}
});
}
function setName(request, response, name, userId) {
var tables = request.service.tables;
var table = tables.getTable('score');
table.where({
userId:userId
}).read({
success: function(results) {
console.log('set name');
if (results.length === 0) {
console.log('insert score');
table.insert({name:name, score:"0", userId:userId});
}
else {
table.update({name:name, id:results[0].id});
}
}
});
}
function createProfile(request, response, userData, userId) {
var tables = request.service.tables;
var tableProfiles = tables.getTable('profiles');
var profile = {
googleid:userData.sub,
name:userData.name,
given_name:userData.given_name,
family_name:userData.family_name,
profile:userData.profile,
picture:userData.picture,
email:userData.email,
email_verified:userData.email_verified,
gender:userData.gender,
userid:userId
};
tableProfiles.where({
userId:userId
}).read({
success: function(results) {
if (results.length !== 0) {
profile.id = results[0].id;
tableProfiles.update(profile);
}
else {
tableProfiles.insert(profile);
}
},
error: function(err) {
response.send(statusCodes.FORBIDDEN, err);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment