我正在尝试使用云函数使用自定义令牌对用户进行身份验证。令牌生成的代码为:
export const test = functions.https.onCall(() => {
const uid = 'test_uid'
admin.auth().createCustomToken(uid)
.then((customtoken) => {
console.log(customtoken)
return customtoken
}).catch((error) => {
console.log(error)
})
})
客户端的代码是:
private void getmessage() {
FirebaseFunctions.getInstance()
.getHttpsCallable("test")
.call()
.addOnCompleteListener(this, new OnCompleteListener<HttpsCallableResult>() {
@Override
public void onComplete(@NonNull Task<HttpsCallableResult> task) {
if(task.isSuccessful()){
Toast.makeText(getApplicationContext(), task.getResult().getData().toString(), Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "Task is NOT Successful", Toast.LENGTH_LONG).show();
}
}
});
}
令牌已成功记录在控制台中,但在客户端返回 null 值。我做错了什么吗?
可调用函数需要返回一个承诺,该承诺在异步工作完成时解析。 该承诺应通过要发送给客户端的数据来解决。 现在,您的函数不返回任何内容。
试试这个:
return admin.auth()
.createCustomToken(...)
.then(...)
.catch(...)