Gio*_*usa 5 javascript firebase google-cloud-functions
我跟这个很亲密.
我编写了一个Cloud Function,它将从Azure令牌发送的信息转换为自定义的Firebase令牌并将此令牌发送回客户端.
令牌已正确创建,但不会在我的HTTP请求中返回.
很遗憾,我的Firebase应用会导致超时.
函数执行花了60002毫秒,完成状态:'超时'
我无法真正理解为什么会这样,因此这篇文章.我的代码有问题,还是我调用HTTP请求错了?
这是我从Firebase Functions控制台获得的日志.
这是我的代码
// Create a Firebase token from any UID
exports.createFirebaseToken = functions.https.onRequest((req, res) => {
// The UID and other things we'll assign to the user.
const uid = req.body.uid;
const additionalClaims = {
name: req.body.name,
email: req.body.email
};
// Create or update the user account.
const userCreationTask = admin.auth().updateUser(uid, additionalClaims).catch(error => {
// If user does not exists we create it.
if (error.code === 'auth/user-not-found') {
console.log(`Created user with UID:${uid}, Name: ${additionalClaims.name} and e-mail: ${additionalClaims.email}`);
return admin.auth().createUser({
uid: uid,
displayName: displayName,
email: email,
});
}
throw error;
console.log('Error!');
});
// Wait for all async tasks to complete, then generate and return a custom auth token.
return Promise.all([userCreationTask]).then(() => {
console.log('Function create token triggered');
// Create a Firebase custom auth token.
return admin.auth().createCustomToken(uid, additionalClaims).then((token) => {
console.log('Created Custom token for UID "', uid, '" Token:', token);
return token;
});
});
});
Run Code Online (Sandbox Code Playgroud)
当我发出这个HTTP请求时,我发送的所有内容都是JSON这样的:
parameters = [
"uid" : id,
"email" : mail,
"name" : name
]
Run Code Online (Sandbox Code Playgroud)
通过HTTP请求触发云功能需要通过与他们结束而终止send(),redirect()或者end(),否则他们将继续运行,并达到超时.
最后总是与HTTP功能
send(),redirect()或end().否则,您的功能可能会继续运行并被系统强行终止.另请参阅同步,异步和承诺.在使用Node.js
moment模块检索和格式化服务器时间之后,该date()函数通过在HTTP响应中发送结果来结束:Run Code Online (Sandbox Code Playgroud)const formattedDate = moment().format(format); console.log('Sending Formatted date:', formattedDate); res.status(200).send(formattedDate);
因此,在您的代码中,您可以在响应中发回令牌send(),例如:
// ...
// Create a Firebase custom auth token.
return admin.auth().createCustomToken(uid, additionalClaims).then((token) => {
console.log('Created Custom token for UID "', uid, '" Token:', token);
res.status(200).send(token);
return token;
});
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |