Login 无法使用sp_会话_重新登录(libspotify)

Login 无法使用sp_会话_重新登录(libspotify),login,spotify,Login,Spotify,我的问题很简单: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;

我的问题很简单: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

根据iKenndac的答案编辑

我正在调用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\u会话\u用户正确返回我的用户名。注销后,我正在等待注销回调调用带有sp_session_process_事件的processing event。调用注销回调时,_loggedin变为false,因此循环结束。我将发布会话。这是一个非常好的应用程序

你看到另一个错误或丢失的东西了吗?有什么想法吗


谢谢。

退出应用程序时,请确保调用
sp\u session\u logout()
,并等待注销完成回调被触发,然后再允许应用程序终止。否则,您可能会得到一个不完整的缓存,这将导致
sp\u session\u relogin()
失败。

谢谢您的回答,但我似乎仍然错过了一些东西。我已经更新了我的问题来解释我是如何登录和退出我的应用程序的。我找到了你的Viva spotify播放器。。。我会看看它,试图了解我错过了什么,但在这个时候我没有找到。不确定我是在开始时(尝试重新登录时)还是在结束时(注销时)丢失。我发现我的问题:只是无法创建设置文件夹,因为它不包含现有目录。我创建了路径及其所有目录,现在一切正常。再次感谢iKenndac。