Java 启用'后的服务帐户身份验证警告;SetTimeStampsSinSnapshot已启用'; 问题

Java 启用'后的服务帐户身份验证警告;SetTimeStampsSinSnapshot已启用'; 问题,java,firebase,google-cloud-firestore,Java,Firebase,Google Cloud Firestore,将我的AppEngine托管应用程序的日期对象更新为每个Firebase时间戳的时间戳对象后,会显示警告并启用setTimeasSinSnapshotEnabled有关使用服务身份验证帐户的新警告 但是,在根据“在您自己的服务器上初始化”小节下的文档初始化Firebase时,我当前正在使用service auth帐户。尽管出现了新的警告消息,但该应用程序仍按预期工作 原始“SetTimestampsSinSnapshotSenabled”警告 Firestore中存储的java.util.Dat

将我的AppEngine托管应用程序的日期对象更新为每个Firebase时间戳的时间戳对象后,会显示警告并启用
setTimeasSinSnapshotEnabled
有关使用服务身份验证帐户的新警告

但是,在根据“在您自己的服务器上初始化”小节下的文档初始化Firebase时,我当前正在使用service auth帐户。尽管出现了新的警告消息,但该应用程序仍按预期工作

原始“SetTimestampsSinSnapshotSenabled”警告 Firestore中存储的java.util.Date对象的行为将发生变化,您的应用程序可能会中断。 要隐藏此警告并确保应用程序不会中断,您需要在调用任何其他云Firestore方法之前向应用程序添加以下代码:

FirestoreOptions options = FirestoreOptions.newBuilder().setTimestampsInSnapshotsEnabled(true).build();
Firestore firestore = options.getService();
通过此更改,存储在Cloud Firestore中的时间戳将作为com.google.Cloud.Timestamp对象而不是系统java.util.Date对象读回。因此,您还需要更新预期为java.util.Date的代码,而不是预期为时间戳。例如:

// Old:
java.util.Date date = (java.util.Date) 
snapshot.get("created_at");
// New:
Timestamp timestamp = (Timestamp) 
snapshot.get("created_at");
java.util.Date date = timestamp.toDate();
启用新行为时,请审核java.util.Date的所有现有用法。在未来的版本中,该行为将更改为新行为,因此如果您不遵循这些步骤,您的应用程序可能会崩溃

新服务帐户身份验证警告 2018年12月9日12:54:39 PM com.google.auth.oauth2.DefaultCredentialsProvider警告关于问题凭证 警告:您的应用程序已使用来自Google Cloud SDK的最终用户凭据进行身份验证。我们建议大多数服务器应用程序改用服务帐户。如果您的应用程序继续使用云SDK中的最终用户凭据,您可能会收到“超出配额”或“API未启用”错误。有关服务帐户的详细信息,请参阅

安装程序 初始化Firebase

FirebaseApp.initializeApp(FirebaseOptions.Builder()
    .setCredentials(
        fromStream(Gson().toJson(FirebaseCredentialsHelper.get()).byteInputStream()))
    .setFirestoreOptions(FirestoreOptions.newBuilder()
    .setTimestampsInSnapshotsEnabled(true).build())
    .build())
服务凭据对象

FirebaseCredentialsHelper返回服务帐户凭据,具体取决于应用程序是在暂存模式还是生产模式下构建的

return FirebaseCredentials(
                "service_account",
                "[project-id]",
                "[private-key-id]",
                "[private-key]",
                "[client-email]",
                "[client-id]",
                "https://accounts.google.com/o/oauth2/auth",
                "https://accounts.google.com/o/oauth2/token",
                "https://www.googleapis.com/oauth2/v1/certs",
                "[client-x509-cert-url]"
        )