我正在努力熟悉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: %sn",
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: %sn",
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。
我不知道我在这里做错了什么,而且似乎也无法通过常规渠道找到任何相关的答案。
API是异步的。sp_session_login
立即返回,登录过程在后台继续进行。查看API附带的示例。您需要某种事件循环来调用sp_session_process_events
,否则libspotify将无法完成任何工作,并且您可能希望等到您收到logged_in
回调。