Не удалось использовать sp_session_relogin (libspotify)

мой вопрос довольно прост: как работает 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);

(имя пользователя и пароль извлекаются из пользовательского интерфейса). затем, если я завершу приложение и перезапущу его, первый вызов входа в систему продолжит возвращать 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 становится ложным, поэтому цикл заканчивается. Я освобождаю сессию. И вполне приложение.

Вы видите еще одну ошибку или пропущенный материал? Любая идея ?

Спасибо.


person Nicolas Hognon    schedule 28.04.2012    source источник


Ответы (1)


Когда вы выходите из своего приложения, убедитесь, что вы вызываете sp_session_logout() и ждете, пока не будет запущен обратный вызов завершения выхода, прежде чем позволить приложению завершить работу. В противном случае вы, скорее всего, получите неполный кеш, что приведет к сбою sp_session_relogin().

person iKenndac    schedule 28.04.2012
comment
Спасибо за ответ, но, кажется, я все еще что-то пропустил. Я обновил свой вопрос, чтобы объяснить, как я выхожу из системы и закрываю свое приложение. - person Nicolas Hognon; 28.04.2012
comment
Я нашел ваш плеер Viva Spotify ... Я посмотрю его, чтобы попытаться понять, что мне не хватает, но на данный момент я не нашел. Не уверен, что я пропустил в начале (когда я пытаюсь повторно войти в систему) или в конце (когда я выхожу из системы). - person Nicolas Hognon; 29.04.2012
comment
Я нахожу свою проблему: просто невозможно создать папку настроек, поскольку она не содержит существующего каталога. Я создаю путь и все его каталоги, и теперь все в порядке. Еще раз спасибо iKendac. - person Nicolas Hognon; 29.04.2012