无法使用 sp_session_relogin (libspotify)

Posted

技术标签:

【中文标题】无法使用 sp_session_relogin (libspotify)【英文标题】:Failed to use sp_session_relogin (libspotify) 【发布时间】:2012-05-08 17:52:31 【问题描述】:

我的问题很简单: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_session_remembered_user 正确返回我的用户名。注销后,我正在等待使用 sp_session_process_events 调用处理事件的注销回调。调用注销回调时,_loggedin 变为 false,因此循环结束。我释放会话。相当的应用程序。

您是否看到另一个错误或缺少的东西?有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

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

以上是关于无法使用 sp_session_relogin (libspotify)的主要内容,如果未能解决你的问题,请参考以下文章

无法访问您试图使用的功能所在的网络位置

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别