我正在尝试手动初始化FirebaseAppApplication但遇到此错误.
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseOptions firebaseOptions = new FirebaseOptions.Builder()
.setDatabaseUrl("[DATABASE_URL]")
.setApiKey("API_KEY")
.setApplicationId("PROJECT_ID").build();
FirebaseApp.initializeApp(getApplicationContext(),firebaseOptions);
if (!FirebaseApp.getApps(this).isEmpty()) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
Run Code Online (Sandbox Code Playgroud)
假设我相应地设置了firebaseOptions值.我期待这将为其设定价值FirebaseApp.
我错过了什么吗?FirebaseApp文档
FirebaseInitProvider在应用启动时初始化默认应用实例.这通过Gradle清单合并添加到应用程序的清单中.如果应用程序使用不同的构建系统,则需要将提供程序手动添加到应用程序的清单中.
或者,initializeApp(Context,FirebaseOptions)初始化默认的应用程序实例.应该从Application调用此方法.如果在应用程序的主进程之外使用它,这也是必要的.
FATAL EXCEPTION: main
Process: com.sample.android, PID: 5490
java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapApplication: java.lang.IllegalStateException: FirebaseApp name [DEFAULT] already exists!
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4331)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)
at …Run Code Online (Sandbox Code Playgroud) 有没有简单的方法将Simple POJO转换为org.bson.Document?
我知道有很多方法可以像这样做:
Document doc = new Document();
doc.append("name", person.getName()):
Run Code Online (Sandbox Code Playgroud)
但它有一个更简单和更错误的方式吗?
我正在寻找与主要城市相对应的时区列表.就像java.util.TimeZone可以提供的那样.我的意思是,我想在javascript中解析America/Los_Angeles标识符UTC-8:00.
是否已存在具有此功能的现有JSON文件或格式?
我遇到了这个接近我正在寻找的东西.
UPDATE
解决方案:使用moment.js检测当前用户时区的ID (未直接回答我的问题,但解决了我的问题)
我正在尝试在服务器中生成自定义令牌然后对其进行验证。我想在我的应用程序中重用 Firebase 身份验证令牌以确保 api 安全。
只是为了测试,我从 Firebase 文档中获得了这段代码。创建自定义令牌,验证 ID 令牌
FirebaseOptions options = new FirebaseOptions.Builder()
.setServiceAccount(sce.getServletContext().getResourceAsStream("/WEB-INF/serviceAccountKey.json"))
.setDatabaseUrl("https://[project-id].firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
final AtomicBoolean done = new AtomicBoolean(false);
FirebaseAuth.getInstance().createCustomToken("the-great-uid")
.addOnSuccessListener(new OnSuccessListener<String>() {
@Override
public void onSuccess(String customToken) {
FirebaseAuth.getInstance().verifyIdToken(customToken)
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception excptn) {
LOG.log(Level.SEVERE, "fail verification", excptn);
done.set(true);
}
})
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
String uid = decodedToken.getUid();
LOG.log(Level.INFO, "SUCCESS VERIFICATION: ");
LOG.log(Level.INFO, "UUDI: {0}", uid);
done.set(true);
}
});
LOG.log(Level.INFO, …Run Code Online (Sandbox Code Playgroud)