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;
}
}
感謝。
のappengine-web.xmlファイルを変更する必要はありませんを使用することができます。あなたはどのようにファイルを読んでいますか? –
FileInputStreamを使用してこのファイルを読み取っているときに、アクセスが拒否されていますが、それを探して、誰かがこのようにしなければならないと言っていましたが、このコードではNullPointerExceptionsを取得しています。 – ReasoN
App Engineで静的ファイルを読み込む方法を説明するStackOverflowには多くの質問があります。例:http://stackoverflow.com/questions/1362545/how-to-load-properties-file-in-google-app-engine?rq=1 –