我想存储自定义电报消息传递应用程序的状态,这样用户就不必重新注册(请求authcode等)。
参考Telegram API : How keep ApiState to save signIn state我目前正在实施以下内容:
...
apiState = loadState(apiStateFile + ".tmp");
...
private MemoryApiState loadState(String fileName) {
try {
FileInputStream fileIn = new FileInputStream(fileName);
ObjectInputStream in = new ObjectInputStream(fileIn);
MemoryApiState mas = (MemoryApiState) in.readObject();
in.close();
fileIn.close();
return mas;
} catch (IOException i) {
return null;
} catch (ClassNotFoundException c) {
c.printStackTrace();
}
return null;
}
并且每次状态更改我都会调用
private void saveState(String fileName, MemoryApiState mas) {
try {
FileOutputStream fileOut = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(mas);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
}
然而,即使apiState不是null并且它显然与Telegrams'相关联。 server(我看到控制台上的所有输出,来自服务器),客户端ID例如是0.这意味着,不会存储注册。
我看到文件系统中写入的文件带有序列化对象,如果保存或加载对象,它不会给我任何输出。
MemoryApiState的实现来自Telegram:https://github.com/rubenlagus/TelegramApi/blob/51713e9b6eb9e0ae0d4bbbe3d4deffff9b7f01e4/src/main/java/org/telegram/bot/kernel/engine/MemoryApiState.java