2012-04-28 9 views
2

私の質問はとても簡単です:どのようにsp_session_reloginが動作していますか?sp_session_relogin(libspotify)の使用に失敗しました

ここで私はそれをどのように使用しようとしています。

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を返した場合、私は(UIから取得されたユーザ名とパスワード)この

login(username,password,true); 

ようにそれを思い出してください。 それから私はかなりのアプリケーションとそれをrelaunchedログインへの最初の呼び出しが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になり、ループが終了します。セッションをリリースします。そして、かなりのアプリケーション。

別の間違いや不足しているものがありますか?何か案が ?

ありがとうございました。

答えて

3

アプリケーションを終了するときは、sp_session_logout()に電話して、アプリケーション終了を許可する前にログアウト完了コールバックが起動するまで待ちます。そうしないと、不完全なキャッシュが発生し、sp_session_relogin()が失敗する可能性があります。

+0

お返事ありがとうございますが、私はまだ何かを逃したようです。ログアウトしてアプリケーションを終了する方法を説明する質問を更新しました。 –

+0

あなたのビバがプレーヤーを見つけました...私はそれを見て、私が逃しているものを理解しようとしますが、現時点では私は見つかりませんでした。私が最初に(私が再ログインしようとするとき)、最後に(私がログアウトしているときに)紛失しているかどうかはわかりません。 –

+0

問題が見つかりました。設定フォルダに既存のディレクトリが含まれていないため、設定フォルダを作成できないということだけです。私はパスとすべてのディレクトリを作成し、今は大丈夫です。もう一度iKenndacに感謝します。 –

関連する問題