【发布时间】:2017-12-31 21:34:32
【问题描述】:
我正在尝试在 App 引擎标准 Java 中使用 Firebase Auth 来验证来自 Android 的令牌。
但是,当我尝试初始化 Firebase 管理员时,我得到了一个异常。
这里是个例外:
java.lang.NoSuchMethodError:
com.google.common.base.Preconditions.checkState
(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.firebase.FirebaseApp.checkNotDeleted (FirebaseApp.java:352)
at com.google.firebase.FirebaseApp.getOptions (FirebaseApp.java:267)
at com.google.firebase.FirebaseApp$TokenRefresher.<init> (FirebaseApp.java:434)
at com.google.firebase.FirebaseApp$TokenRefresher$Factory.create (FirebaseApp.java:535)
at com.google.firebase.FirebaseApp.<init> (FirebaseApp.java:113)
at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:201)
at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:188)
at com.google.firebase.FirebaseApp.initializeApp (FirebaseApp.java:175)
很有可能,因为 Guava 版本存在冲突
这是我的毕业作品:
dependencies {
appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.60'
compile 'com.google.appengine.tools:appengine-gcs-client:0.7'
compile ('com.google.firebase:firebase-admin:5.7.0') {
exclude group: 'com.google.guava'
}
compile 'com.google.guava:guava:23.0'
compile 'javax.servlet:servlet-api:2.5'
}
代码如下:
InputStream in = filterConfig.getServletContext()
.getResourceAsStream("/WEB-INF/PRIVATE_KEY_JSON.json");
FirebaseOptions options = null;
try {
options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(in))
.build();
} catch (IOException e) {
e.printStackTrace();
}
FirebaseApp.initializeApp(options);
【问题讨论】:
-
您将需要检查依赖关系树,并找出冲突的 Guava 版本来自何处。 Admin SDK 使用 Guava 20.0。
标签: java google-app-engine firebase-admin