Android获取唯一的firebase令牌并使用云功能进行身份验证

时间:2018-06-19 09:30:53

标签: javascript android firebase firebase-authentication google-cloud-functions

我正在构建一款多人Android游戏,它使用Firebase云功能。 有一些教程解释了如何只允许我的应用程序的用户使用我的云功能(下面的链接),但我不想让所有用户都使用我的所有功能,我想根据Id提供访问权限。如何为Android(Using Java not Kotlin)中的每个用户生成唯一令牌,以及如何从node.js (Javascript not TypeScript)中的该令牌获取ID?

教程链接:https://firebase.google.com/docs/cloud-messaging/auth-server

1 个答案:

答案 0 :(得分:2)

启动Firebase功能1.0+,您可以将2种HTTP功能用于Android应用。

  1. 直接调用函数。通过functions.https.onCall
  2. 通过HTTP请求调用函数。通过functions.https.onRequest
  3. 我建议您使用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