我正在构建一款多人Android游戏,它使用Firebase云功能。
有一些教程解释了如何只允许我的应用程序的用户使用我的云功能(下面的链接),但我不想让所有用户都使用我的所有功能,我想根据Id提供访问权限。如何为Android(Using Java not Kotlin
)中的每个用户生成唯一令牌,以及如何从node.js (Javascript not TypeScript)
中的该令牌获取ID?
教程链接:https://firebase.google.com/docs/cloud-messaging/auth-server
答案 0 :(得分:2)
启动Firebase功能1.0+,您可以将2种HTTP功能用于Android应用。
functions.https.onCall
functions.https.onRequest
我建议您使用onCall
作为功能端点,并使用FirebaseFunctions
直接致电。这样,您就不需要获取FirebaseUser令牌,因为当您使用FirebaseFunctions
进行呼叫时,它会自动包含在内。
请记住,TypeScript只是Javascript的超集。我仍然会在Node.js中给出示例,但建议在TypeScript中键入您的Javascript代码。
示例强>
index.js(CloudFunctions端点)
exports.importantfunc = functions.https.onCall((data, context) => {
// Authentication / user information is automatically added to the request.
if (!context.auth) {
// Throwing an HttpsError so that the client gets the error details.
throw new functions.https.HttpsError('not-authorised',
'The function must be called while authenticated.');
}
const uid = context.auth.uid;
const email = context.auth.token.email;
//Do whatever you want
});
MyFragment.java
//Just some snippets of code examples
private void callFunction() {
FirebaseFunctions func = FirebaseFunctions.getInstance();
func.getHttpsCallable("importantfunc")
.call()
.addOnCompleteListener(new OnCompleteListener<HttpsCallableResult>() {
@Override
public void onComplete(@NonNull Task<HttpsCallableResult > task) {
if (task.isSuccessful()) {
//Success
} else {
//Failed
}
}
});
}
有关可调用函数的更多信息,read here