Created
April 14, 2015 10:07
-
-
Save nazargulov/b69b86a578375c33d812 to your computer and use it in GitHub Desktop.
login API method in Azure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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