2016-07-23 14 views
0

Firebase SDK用にFirebaseにサーバを認証する必要があります。しかし残念ながら私はcredentials.jsonファイルを読むことができません。 service.jsonファイルをWEB-INFフォルダに入れました。Google App Engine(JAVA)でファイルを読み取るには

私のappengine-web.xmlファイルにこれを追加しました:

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

そして、私はこのコードを使用してファイルを読み込むしようとしています:

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

しかし、私は読んしようとすると、 file私はNullPointerExceptionを取得します。

これは私のクラス全体である:あなたの助けを事前に

@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; 
} 

}

感謝。

+0

のappengine-web.xmlファイルを変更する必要はありませんを使用することができます。あなたはどのようにファイルを読んでいますか? –

+0

FileInputStreamを使用してこのファイルを読み取っているときに、アクセスが拒否されていますが、それを探して、誰かがこのようにしなければならないと言っていましたが、このコードではNullPointerExceptionsを取得しています。 – ReasoN

+0

App Engineで静的ファイルを読み込む方法を説明するStackOverflowには多くの質問があります。例:http://stackoverflow.com/questions/1362545/how-to-load-properties-file-in-google-app-engine?rq=1 –

答えて

1

あなたは

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

まだこのソリューションでNullPointerExceptionsを取得しています – ReasoN

+0

NullPointerExceptionは特定のコード行を指す必要があります。どれ? –

+0

setServiceAccount(this.getClass()。getResourceAsStream( "/ WEB-INF/service.json")) this one – ReasoN

関連する問題