Java 名为[DEFAULT]的FirebaseApp不';不存在;Firebase令牌验证

Java 名为[DEFAULT]的FirebaseApp不';不存在;Firebase令牌验证,java,maven,authentication,token,firebase-authentication,Java,Maven,Authentication,Token,Firebase Authentication,为了验证从客户端应用程序发送的Firebase令牌,我有以下代码: Task<FirebaseToken> authTask = FirebaseAuth.getInstance().verifyIdToken("very long string token").addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(Object tr) { } }).addOnFailureLis

为了验证从客户端应用程序发送的Firebase令牌,我有以下代码:

Task<FirebaseToken> authTask = FirebaseAuth.getInstance().verifyIdToken("very long string token").addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Object tr) { }
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception excptn) { }
}).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Task task) { }
});
try {
Tasks.await(authTask);
} catch(ExecutionException | InterruptedException e ){
//handle error
}
FirebaseToken decodedToken = authTask.getResult();
String uid = decodedToken.getUid();
Task authTask=FirebaseAuth.getInstance().verifyIdToken(“超长字符串标记”).addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公共无效(对象tr){}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(异常excptn){}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
公共void onComplete(任务){}
});
试一试{
任务。等待(authTask);
}捕获(ExecutionException | InterruptedException e){
//处理错误
}
FirebaseToken decodedToken=authTask.getResult();
字符串uid=decodedToken.getUid();
当通过Maven/google后端api部署时,我得到以下错误:

java.lang.IllegalStateException:名为[DEFAULT]的FirebaseApp不存在

我如何解决它

  • 你必须在谷歌云控制台上设置一个服务帐户。读这本书

  • 将服务帐户密钥文件(.json)放在
    /resources/META-INF/
    目录中

  • 确保已将资源文件包含在
    appengine web.xml

  • 然后可以继续在代码中使用
    FirebaseAuth.getInstance()

  • 当您的AppEngine实例运行测试版(可能是1.9.44)时,它会给您一个noMethodFoundError。那你就可以继续了

    <!-- Include resource files -->
    <resource-files>
        <include path="/**.json" />
        <include path="/**.xml" />
        <include path="/**.properties" />
    </resource-files>
    
    public void init(ServletConfig config) throws ServletException {
    
        InputStream loadedServiceAccount = config
            .getServletContext()
            .getResourceAsStream("/WEB-INF/service_account_key.json");
    
        FirebaseOptions options = new FirebaseOptions.Builder()
            .setServiceAccount(loadedServiceAccount)
            .setDatabaseUrl("URL_FIREBASE_DATABASE").build();
    
        FirebaseApp firebaseApp = FirebaseApp.initializeApp(options);
        FirebaseAuth.getInstance(firebaseApp);
    
    }