2016-07-28 11 views
1

爲了驗證從客戶端應用程序,我有以下代碼發送火力令牌:名稱爲[DEFAULT]的FirebaseApp不存在;火力地堡記號驗證

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 /谷歌後端API部署它,我得到以下錯誤:

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

如何解決?

回答

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> 
內部資源文件
  • 越過FirebaseOptions與生成service_account_key.json文件初始化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); 
    
    } 
    
  • 然後你就可以繼續使用FirebaseAuth.getInstance()你的代碼中。

  • 當你的AppEngine上運行實例的測試版本(也許44年9月1日),它會給你一個noMethodFoundError。然後你可以繼續這個Question

    +0

    如何在本地做同樣的事情? –