所以我做了这个非常简单的方法,我想使用自定义令牌登录到Firebase。截至目前为止
export const createCustomToken = functions.region('europe-west1').https.onCall(async (data, context) => {
try {
const firebaseJWT = await authenticationProvider.createCustomToken()
console.log(firebaseJWT.toString())
} catch (err) {
throw new functions.https.HttpsError('internal', 'Something went wrong ');
}
});
authenticationProvider看起来像这样:
return firebase.admin.auth().createCustomToken("Some uid")
.then((token) => {
console.log("Did create custom token.");
return token;
}).catch((error) => {
console.log("Error creating custom token:" + error);
throw new firebase.functions.https.HttpsError('internal', 'createCustomToken(uid) has failed for some reason');
})
}
我尝试使用shell方法在本地运行它,在命令提示符下执行此行:firebase functions:shell,然后调用authenticationController.createCustomToken({})
这只是给我以下响应: 创建自定义令牌时出错:错误:无法确定服务帐户。确保使用服务帐户凭据初始化SDK。或者,指定一个具有iam.serviceAccounts.signBlob权限的服务帐户。原始错误:错误:发出请求时出错:getaddrinfo ENOTFOUND元数据元数据:80。错误代码:ENOTFOUND
服务帐户似乎具有适当的角色,所以我认为这不是问题。
所以我想知道是否可以通过某种方式从邮递员那里叫我createCustomToken()函数,并查看响应,以便我可以正确地测试我的代码,而无需应用程序实现onCall方法来查看结果?
或者我缺少通过firebase functions:shell命令运行它的什么?
答案 0 :(得分:0)
您可以按照官方文档here
所述,使用请求标头在Postman上测试firebase函数。首先,您必须在项目的根文件夹中使用以下命令在本地提供功能
firebase serve
您还可以查看官方文档如何在本地{@ 3}服务
在运行上述命令时,您将获得函数的http链接。像这样
http://localhost:5000/{YOUR_FIREBASE_PROJECT_NAME}/us-central1/myFunction
将该链接用于Postman中的POST请求。在Postman的“正文”部分中,从下拉列表中选择“原始”,然后选择“ JSON(application / json)”,然后在正文部分中键入以下正文示例
{
"data": {}
}
如文档here中所述,需要在正文中添加带有“ data”参数的json对象。检查以下屏幕截图以供参考
现在,您可以发送请求以从功能中获取响应。希望对您有所帮助:)