1

我正在尝试熟悉 libspotify,我必须说 libspotify 上的文档严重缺乏。我已经从示例中破解了一个小应用程序,但我无法让它工作。

我正在 Visual Studio 2012 中构建一个 C 控制台应用程序。appkey 是正确的。

sp_session_config config;
sp_error error;
sp_session *session;
char *blob = NULL;

memset(&config, 0, sizeof(config));

config.api_version = SPOTIFY_API_VERSION;
config.cache_location = "tmp";
config.settings_location = "tmp";
config.application_key = g_appkey;
config.application_key_size = g_appkey_size;

config.user_agent = "SpotiTest";

error = sp_session_create(&config, &session);
if (SP_ERROR_OK != error) {
    fprintf(stderr, "failed to create session: %s\n",
                    sp_error_message(error));
    return;
}

error = sp_session_login(session, "USERNAME", "PASSWORD", 1, blob);
if (SP_ERROR_OK != error) {
    fprintf(stderr, "failed to log in to Spotify: %s\n",
                    sp_error_message(error));
    sp_session_release(session);
    exit(4);
}

sp_connectionstate cs = sp_session_connectionstate (session);

无论用户名和密码是什么(错误或正确),sp_session_login 始终返回 SP_ERROR_OK。当我使用 sp_session_connectionstate 检查连接状态时,它总是返回 SP_CONNECTION_STATE_LOGGED_OUT。

我没有看到我在这里做错了什么,也似乎无法通过常规渠道找到任何相关的答案。

4

1 回答 1

1

API 是异步的。sp_session_login立即返回,登录过程在后台继续。查看 API 附带的示例。您需要某种事件循环来调用sp_session_process_events,否则 libspotify 将无法完成任何工作,您可能希望等到收到logged_in回调。

于 2013-01-17T14:36:29.117 回答