我的问题很简单: sp_session_relogin 是如何工作的?
这是我尝试使用它的方法。
bool login(const char* login, const char* password, bool remember)
{
if (remember) {
sp_error err = sp_session_relogin(_session);
if (err==SP_ERROR_OK) {
return true;
}
if (!login||!password) {
return false;
}
}
sp_session_login(_session, login, password, remember, NULL);
return true;
}
我第一次调用我的应用程序
login(0,0,true);
如果它返回false,我会这样回忆
login(username,password,true);
(从 UI 检索用户名和密码)。然后,如果我关闭应用程序并重新启动它,第一次登录调用继续返回 false。
在 iKendac 回答后编辑
我正在调用 sp_session_logout() 但我没有等待调用注销回调。我有它,但它不是更好。这是我的应用程序的结束方式
if (_session) {
if (_loggedin) {
char buffer[1024];
int ret = sp_session_remembered_user(_session,buffer,sizeof(buffer));
if (ret>0) {
printf("remembered user: %s\n",buffer);
}
sp_session_logout(_session);
int msTilNext = 0;
while(_loggedin) {
sp_session_process_events(_session, &msTilNext);
}
}
sp_session_release(_session);
_session = 0;
}
sp_session_remembered_user 正确返回我的用户名。注销后,我正在等待使用 sp_session_process_events 调用注销回调处理事件。调用注销回调时,_loggedin 变为 false,因此循环结束。我释放会话。和相当的应用程序。
你看到另一个错误或丢失的东西吗?任何想法 ?
谢谢。