2016-07-28 4 views
1

um eine Feuerbasis Token von einer Client-Anwendung i den folgenden Code haben gesendet, um zu überprüfen:FirebaseApp mit Name [DEFAULT] existiert nicht; Firebase Token Verification

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(); 

Wenn bereitstellen es durch Maven/google Backend api bekomme ich folgende Fehlermeldung:

java .lang.IllegalStateException: FirebaseApp mit dem Namen [DEFAULT] existiert nicht

Wie kann ich das Problem lösen?

Antwort

1
  1. Sie müssen in Ihrer Google Cloud Console ein Dienstkonto einrichten. Lesen Sie die Docs.

  2. Fügen Sie die Dienstkonto-Schlüsseldatei (.json) in Ihr Verzeichnis /resources/META-INF/ ein.

  3. Stellen Sie sicher, dass Ihre Ressource-Dateien innerhalb des

    appengine-web.xml enthalten
<!-- Include resource files --> 
<resource-files> 
    <include path="/**.json" /> 
    <include path="/**.xml" /> 
    <include path="/**.properties" /> 
</resource-files> 
  1. Pass über die FirebaseOptions mit der erzeugten service_account_key.json Datei FirebaseApp zu initialisieren. Sie können dies innerhalb einer Warmup Servlet tun.
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. Dann können Sie gehen auf FirebaseAuth.getInstance() in Ihrem Code verwenden.

Wenn Ihre App Engine-Instanz eine Beta-Version läuft (vielleicht 1.9.44) es wird Ihnen ein noMethodFoundError geben. Dann können Sie mit dieser Question weitermachen.

+0

wie das gleiche lokal zu tun ??? –

Verwandte Themen