Я относительно новичок в Node.js
и создаю сервер, который будет принимать запрос POST
от мобильного приложения, тело которого содержит учетные данные, которые затем будут проверены через GET
на другом сервере.Если ответ GET
подтверждает учетные данные, то извлекается UID и вызывается firebase admin SDK
для создания пользовательского токена.Вот фрагмент кода и две функции, которые вызываются для (a)
проверки учетных данных и (b)
генерации пользовательского токена.
//Listen for app to POST Credential
app.post('/', function(request, response) {
console.log('Request Body: ',request.body);
var Credential = request.body;
//Validate Credential
validateCredential(Credential)
//Get Authorization Token
getToken(userID)
//Return Token for POST Response
response.set('Content-Type','Text');
response.end(firebaseAuthToken);
});
//Create listener for POST function
app.listen(port, function() {
console.log('AuthServer is running and listening on port '+port);
});
//Function to Validate Credential
async function validateCredential(crdntl) {
//Call Service to validate Credential received
axios({
method: 'get',
url: 'https://.....',
})
.then(function(response) {
...check credential validation data
})
.catch(function (error) {
console.log('ERROR: Unable to Validate Credential');
//Unable to create Validate Credential so return error message for POST response
return ('ERROR1');
});
}
async function getToken(uid) {
admin.auth().createCustomToken(uid)
.then(function(customToken) {
var AuthToken = customToken;
var decoded = jwt.decode(AuthToken);
console.log('Decoded Token: '+'\n',decoded);
//Return Authorization Token for POST response
return (AuthToken);
})
.catch(function(error) {
console.log('ERROR: Unable to Create Custom Token', error);
//Unable to create Token so return error message for POST response
return ('ERROR2');
});
}
}
Мне нужен результат validateCredential возвращаемая функция и ее результат передаются в функцию getToken , а ее результат возвращается для отправки ответа POST.Я знаю, что эти функции являются асинхронными, и я могу связать их с помощью обратных вызовов или обещаний.
Реальная проблема заключается в том, как заставить ответ POST ожидать обратного вызова от функции getToken, поскольку конечной целью является передача пользовательского токена.вернуться к мобильному приложению в теле ответа POST.Любая помощь будет оценена.