Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase身份验证具有有效Firebase令牌的不受信任java客户端_Java_Firebase_Firebase Authentication_Firebase Admin - Fatal编程技术网

Firebase身份验证具有有效Firebase令牌的不受信任java客户端

Firebase身份验证具有有效Firebase令牌的不受信任java客户端,java,firebase,firebase-authentication,firebase-admin,Java,Firebase,Firebase Authentication,Firebase Admin,我正在构建一个小型Java客户机,它的前端有一个角度,可以分发给客户机 目前,我有一个登录屏幕,通过Angular返回一个有效的firebase令牌。我不确定的地方是如何使用该令牌根据应用程序的Java部分对用户进行身份验证,以便Java客户端可以执行文件上传等操作 使用Admin SDK,我可以执行以下操作: public FirebaseAuth firebaseAuth() throws IOException { FileInputStream serviceAccount =

我正在构建一个小型Java客户机,它的前端有一个角度,可以分发给客户机

目前,我有一个登录屏幕,通过Angular返回一个有效的firebase令牌。我不确定的地方是如何使用该令牌根据应用程序的Java部分对用户进行身份验证,以便Java客户端可以执行文件上传等操作

使用Admin SDK,我可以执行以下操作:

public FirebaseAuth firebaseAuth() throws IOException {
    FileInputStream serviceAccount = new FileInputStream(new ClassPathResource(SERVICE_ACCOUNT_KEY).getFile());

    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .setDatabaseUrl(String.format("https://%s.firebaseio.com/", DATABASE_NAME))
            .build();

    FirebaseApp.initializeApp(options);

    return FirebaseAuth.getInstance();
}
然后,我可以按照标准流程根据Firebase验证令牌并获取用户详细信息

因为我将Angular前端和Java客户端分发给最终用户,所以我不能使用AdminSDK


我该如何着手解决这个问题?是否有其他类型的流我应该研究?或者我可以使用Firebase令牌吗

Firebase Admin SDK无法将其访问范围限定为单个经过身份验证的用户。它用于您完全控制的后端系统。使用服务帐户初始化,它将有权执行服务帐户可以执行的任何操作。它不打算分发给最终用户或任何您不信任的实体,以完全访问您的Firebase项目


当涉及到对最终用户的实际身份验证时,Firebase身份验证仅适用于客户端应用程序(Android、iOS、web和衍生环境)。

我完全理解第一段,并认为问题非常清楚。我也理解第二部分,我的问题是什么是替代解决方案你的替代方案在第二段-使用Android,iOS,或者可以使用客户端auth SDK的web应用程序。如果您建议只编写一个移动应用程序,我感觉您完全忽略了这个问题。Firebase身份验证在移动应用程序之外没有真正的用途。如果你问你如何在没有现有客户端SDK的情况下使用Firebase令牌,这对于堆栈溢出来说太宽泛了。还有一个REST API,但根本不清楚如何以满足你的情况的方式简单地说明它的使用(这是相当模糊的)。