【问题标题】:FirebaseApp with name [DEFAULT] doesn't exist ; Firebase Token Verification名称为 [DEFAULT] 的 FirebaseApp 不存在; Firebase 令牌验证
【发布时间】:2016-12-03 09:49:19
【问题描述】:

为了验证从客户端应用发送的 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();

当通过 Maven/google 后端 api 部署它时,我收到以下错误:

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

我该如何解决?

【问题讨论】:

    标签: java maven authentication token firebase-authentication


    【解决方案1】:
    1. 您必须在 Google Cloud Console 中设置服务帐户。阅读Docs

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

    3. 确保您已将资源文件包含在 appengine-web.xml

    <!-- Include resource files -->
    <resource-files>
        <include path="/**.json" />
        <include path="/**.xml" />
        <include path="/**.properties" />
    </resource-files>
    
    1. 使用生成的service_account_key.json 文件传递​​FirebaseOptions 以初始化FirebaseApp。您可以在 Warmup Servlet 中执行此操作。
    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);
    
    }
    
    1. 然后您可以继续在代码中使用FirebaseAuth.getInstance()

    当您的 AppEngine 实例运行测试版(可能是 1.9.44)时,它会给您一个 noMethodFoundError。然后你可以继续这个Question

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 2019-07-09
      • 2016-09-17
      • 1970-01-01
      • 2019-12-04
      • 2021-10-17
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多