2016-07-23 14 views
0

Ich muss meinen Server zu Firebase für das Firebase SDK autorisieren. Aber leider kann ich die credentials.json Datei nicht lesen. Ich habe meine service.json Datei in meinen WEB-INF Ordner gelegt.Wie lese ich eine Datei in Google App Engine (JAVA)

<resource-files> 
    <include path="/service.json"/> 
</resource-files> 

Und ich versuche, die Datei mit diesem Code zu lesen:

FirebaseOptions options = new FirebaseOptions.Builder().setServiceAccount(ServletServletContext.class.getResourceAsStream("/WEB-INF/service.json")) 

Aber wenn ich versuche, das lesen

Ich habe diese Datei zu meiner appengine-web.xml hinzugefügt Datei bekomme ich eine NullPointerException.

Das ist meine ganze Klasse:

@Api(
    name = "myApi", 
version = "v1", 
namespace = @ApiNamespace(
ownerDomain = "backend", 
ownerName = "backend", 
packagePath="" 
) 
) 
public class MyEndpoint { 

private static final Logger log = Logger.getLogger(MyEndpoint.class.getName()); 
private String uid; 

@ApiMethod(name = "signup") 
public MyBean signup(@Named("token")String token) 
{ 
    uid = "empty"; 
    uid = "init"; 

    log.info(new File(getClass().getResource("/WEB-INF/service.json").toString()).exists()+""); 

    FirebaseOptions options = new FirebaseOptions.Builder() 
       .setServiceAccount(getClass().getResourceAsStream("/WEB-INF/service.json")) 
       .setDatabaseUrl("url") 
       .build(); 

    FirebaseApp.initializeApp(options); 
    uid = "initialized"; 

    log.severe("initialized"); 
    FirebaseAuth.getInstance().verifyIdToken(token) 
      .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { 

        @Override 
        public void onSuccess(FirebaseToken decodedToken) {uid = decodedToken.getUid(); 
        } 
      }); 

    MyBean b = new MyBean(); 
    if(!uid.equals("")) 
     b.setData(uid); 
    // else 
    // b.setData("failed"); 

    return b; 
} 

}

Vielen Dank im Voraus für Ihre Hilfe.

+0

verwenden Es wird appengine-web.xml keine Notwendigkeit zu ändern. Wie liest du die Datei? –

+0

Wenn ich einen FileInputStream benutze, um diese Datei zu lesen, bekomme ich einen Zugriff verweigert, aber dann habe ich nachgeschaut und jemand hat gesagt, ich sollte es so machen, aber mit diesem Code bekomme ich nur NullPointerExceptions. – ReasoN

+0

Es gibt viele Fragen zu StackOverflow, die erklären, wie eine statische Datei in App Engine gelesen wird. Zum Beispiel: http://stackoverflow.com/questions/1362545/how-to-load-properties-file-in-google-app-engine?rq=1 –

Antwort

1

können Sie

this.getClass().getResourceAsStream("/WEB-INF/service.json"); 
+0

Ich bekomme immer noch NullPointerExceptions mit diesen Lösungen – ReasoN

+0

NullPointerException sollte auf bestimmte Codezeile zeigen. Welcher? –

+0

setServiceAccount (this.getClass(). GetResourceAsStream ("/ WEB-INF/service.json")) dieses – ReasoN