Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getRandomString()
- {
- var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
- var string_length = 10;
- var randomstring = '';
- for (var i=0; i<string_length; i++) {
- var rnum = Math.floor(Math.random() * chars.length);
- randomstring += chars.substring(rnum,rnum + 1);
- }
- return randomstring;
- }
- Parse.Cloud.define("getSessionToken", function(request, response) {
- //console.log(request);
- //console.log(request.params.accessToken);
- //console.log(request.params.GClientId);
- Parse.Cloud.useMasterKey();
- //Verifying token (id Token)
- var authTokenVerificationURL = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=" + request.params.idToken;
- //console.log(authTokenVerificationURL);
- Parse.Cloud.httpRequest({
- url:authTokenVerificationURL
- }).then(function(httpResponse){
- //Success
- //console.log("success httpResponse: " + httpResponse.text);
- //Verify if token is generated from our client
- var gAudience = httpResponse.data.aud;
- if(gAudience == request.params.GClientId) {
- console.log("Verified: Token is generated from our app");
- var user_emailId = httpResponse.data.email;
- //console.log(user_emailId);
- //Check if User account exists for the emailId
- var query = new Parse.Query(Parse.User);
- query.equalTo("email",user_emailId);
- query.first({
- success: function(user) {
- if(user) {
- console.log("User found with Username: " + user.getUsername() + ", objectId: " + user.id);
- //Generate the Session Token
- var sessionToken = user.getSessionToken();
- if(sessionToken) {
- console.log("SessionToken: " + sessionToken);
- response.success(sessionToken);
- }else {
- console.log("Unable to generate session token");
- response.error('Unable to generate Session Token');
- }
- }else {
- console.log("User not found, Creating new account for user with emailId: " + user_emailId);
- //Create New Account
- var nUser = new Parse.User();
- nUser.set("username",user_emailId);
- nUser.set("password",getRandomString());
- nUser.set("email",user_emailId);
- nUser.signUp(null,{
- success: function(user) {
- console.log("New account created for user with emailID: " + user_emailId);
- //Generate the Session Token
- var sessionToken = user.getSessionToken();
- console.log("SessionToken: " + sessionToken);
- response.success(sessionToken);
- },
- error: function(user, error) {
- console.log("Failed to create a new account for emailID: " + user_emailId);
- console.log("User: " + user + ", Error: " + error);
- response.error(error);
- }
- });
- }
- },
- error: function(user, error) {
- console.log("Query to fetch user failed");
- console.log("User: " + user + ", Error: " + error);;
- response.error(error);
- },
- userMasterKey:true
- });
- }else { //Client has not login from our app
- console.log("Google AudienceID: " + gAudience + "\n AppClientId: " + request.params.GClientId);
- response.error('Invalid Audience');
- }
- },function(httpResponse) {
- //Error
- console.log("Failed httpResponse: " + httpResponse.text);
- console.error('Request Failed with response code' + httpResponse.status);
- response.error('Failed to verify access token');
- });
- });
Add Comment
Please, Sign In to add comment