验证服务器上的Firebase实例Id

验证服务器上的Firebase实例Id,firebase,firebase-admin,Firebase,Firebase Admin,我有一个与Firebase集成的android应用程序。 我已经按照firebase控制台上提到的集成说明进行了操作 我的应用程序需要在其API请求中将实例Id发送到后端 我正在使用以下代码获取实例ID FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override

我有一个与Firebase集成的android应用程序。 我已经按照firebase控制台上提到的集成说明进行了操作

我的应用程序需要在其API请求中将实例Id发送到后端

我正在使用以下代码获取实例ID

FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.e("QUICKFOX", "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();
                Log.e("QUICKFOX",">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                Log.e("QUICKFOX",token);
                Log.e("QUICKFOX",">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");

            }
        });
FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
Log.e(“QUICKFOX”,“getInstanceId失败”,task.getException());
返回;
}
//获取新实例ID令牌
字符串标记=task.getResult().getToken();
Log.e(“QUICKFOX”、“>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>”;
Log.e(“QUICKFOX”,令牌);
Log.e(“QUICKFOX”、“>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>”;
}
});
我正在使用该服务验证实例Id

我不确定以下几点:

  • 是授权:key=作为查询参数或标头传递。 从这个示例来看,它似乎是作为查询参数传递的。但是 文件上说这是一个标题
  • 无论哪种方式(作为标题还是作为查询参数),我都会得到401个未经授权的响应(响应类型似乎也是text/HTML)
  • 作为API密钥发送的内容。我用过webAPIKey,但我还是拿到了401。我在google-services.json中使用了api_键,但仍然存在相同的401错误

  • 有人能帮我吗。

    我发现了这个问题。我真的不明白其中的区别,但这对我来说很有效。 需要一个服务器密钥,可以在以下位置找到:

  • 转到firebase控制台
  • 点击项目设置
  • 点击服务帐户
  • 单击其他服务帐户
  • 这将打开GCP控制台
  • 点击左上角的汉堡包菜单
  • 点击API和服务
  • 点击凭证
  • 如下图所示找到服务器密钥并复制 钥匙这是可用于验证实例的API密钥 Id标记