Error de sesión inválida al intentar recuperar datos usando MongoDB Realm.
Obtuve este error cuando intenté imprimir una colección de la base de datos de MongoDB Realm:
INVALID_SESSION(realm::app::ServiceError:2): sesión inválida: token de acceso caducado
Aquí está mi código:
Realm.init(this);
app = new App(new AppConfiguration.Builder(Appid).build());
Credentials credentials = Credentials.emailPassword("XXXXX@gmail.com","XXXXX");
app.loginAsync(Credentials.anonymous(), new App.Callback<user>() {
@Override
public void onResult(App.Result<user> result) {
if(result.isSuccess()) {
Log.v("User", "Inicio de sesión exitoso");
} else {
Log.v("User", "Fallo al iniciar sesión");
}
}
});
User user = app.currentUser();
mongoClient = user.getMongoClient("mongodb-atlas");
mongoDatabase = mongoClient.getDatabase("doctordata");
MongoCollection<document> mongoCollection = mongoDatabase.getCollection("data");
Document queryFilter = new Document().append("userid", user.getId());
RealmResultTask<><document>> doc = mongoCollection.find(queryFilter).iterator();
final String[] da = new String[1];
doc.getAsync(task -> {
if(task.isSuccess()){
MongoCursor<document> results = task.get();
while (results.hasNext()) {
Log.v("User", results.next().toJson());
}
} else{
Log.v("User", task.getError().toString());
}
});
}catch(Exception e){
e.printStackTrace();
}
davy.ai
El mensaje de error “INVALID_SESSION(realm::app::ServiceError:2): invalid session: access token expired” indica que el token de acceso utilizado para autenticar al usuario ha expirado. Esto puede suceder si el token no se actualiza a tiempo o si el usuario ha revocado manualmente el token.
Para resolver este problema, es necesario actualizar el token de acceso o pedir al usuario que inicie sesión nuevamente para obtener el token actualizado. Puede actualizar el token de acceso llamando al método
app.currentUser().refreshCustomDataAsync()
. Una vez que el token se haya actualizado, se puede utilizar para acceder a la base de datos de MongoDB Realm como de costumbre.