我正在尝试一些Firebase示例,特别是如何在Java(标准JDK,而不是Android)中验证用户。
每次我运行代码时,我都会从Firebase API得到这些警告:
Sun Jun 28 14:29:58 BST 2015 [WARN] CredentialStore: Using no-op credential store. Not persisting credentials! If you want to persist authentication, please use a custom implementation of CredentialStore.
authenticated ok!
这是指什么?当它暗示持久性时,它是指应用程序会话期间的持久性,还是指应用程序连续运行之间的持久性?如何解决此警告?
以下是代码——它基于Firebase指南上的示例(请注意,帐户详细信息已被掩盖):
package firebase_reader;
import com.firebase.client.AuthData;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import java.util.logging.Level;
import java.util.logging.Logger;
public class main
{
public static void main(String[] args)
{
final Firebase fbref = new Firebase("https://XXX.firebaseio.com/");
Firebase.AuthResultHandler authResultHandler = new Firebase.AuthResultHandler()
{
@Override
public void onAuthenticated(AuthData authData)
{
System.out.print("authenticated ok!n");;
}
@Override
public void onAuthenticationError(FirebaseError firebaseError)
{
System.out.print("auth failed:" + firebaseError);
}
};
fbref.authWithPassword("YYY", "ZZZ", authResultHandler);
try
{
while (true) { Thread.sleep(10000); }
} catch (InterruptedException ex)
{
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
使用Firebase Android SDK时,在实例化Firebase客户端时需要一个Android应用程序上下文,该上下文用于在应用程序重新启动时自动保持身份验证状态。
当使用普通的Firebase JVM SDK时,身份验证状态不会自动持久化,因为没有默认机制可以在应用程序重新启动时持久化此状态。如果你不想拥有那个授权。状态自动持久化,则可以忽略该警告。或者,您可以实现Firebase CredentialStore
接口,但对于服务器进程来说,这可能不需要。