2015-07-12 2 views
5

У меня есть приложение, которое позволяет пользователям проигрывать песни из spotify. Поэтому для достижения этого мне нужно периодически обновлять сеанс, когда пользователи хотят потоковать песню из spotify. Я использую последние spotify sdk (beta-9), и в настоящее время я следую учебнику от https://www.youtube.com/watch?v=GeO00YdJ3cE. В этом уроке нам нужно обновить токен swap, но когда я посмотрел с https://developer.spotify.com/technologies/spotify-ios-sdk/tutorial/, нет необходимости обновлять токен.Как продлить сеанс оповещения?

и я в конечном итоге не используя маркер подкачки, когда я обновить мою сессию, то играть песню с новой сессией, я получил ниже ошибок:

Error Domain=com.spotify.ios-sdk.playback Code=8 "Login to Spotify failed because of invalid credentials." UserInfo=0x7f840bf807b0 {NSLocalizedDescription=Login to Spotify failed because of invalid credentials.}

И я использую этот код, приведенный ниже, для обновления моего сессия:

let userDefaults = NSUserDefaults.standardUserDefaults() 

    if let sessionObj : AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("spotifySession") { 

     let sessionDataObj : NSData = sessionObj as! NSData 
     let session = NSKeyedUnarchiver.unarchiveObjectWithData(sessionDataObj) as! SPTSession 
     self.playUsingSession(session) 

     if !session.isValid() { 

      SPTAuth.defaultInstance().renewSession(session, callback: { (error : NSError!, newsession : SPTSession!) -> Void in 

       if error == nil { 

        let sessionData = NSKeyedArchiver.archivedDataWithRootObject(session) 
        userDefaults.setObject(sessionData, forKey: "spotifySession") 
        userDefaults.synchronize() 

        self.session = newsession 

        self.playUsingSession(newsession) 

       }else{ 

        println("renew session having problerm >>>>> \(error)") 

       } 
      }) 
     }else{ 

      println("session is still valid") 
      self.playUsingSession(session) 

     } 

    }else{ 

     spotifyLoginButton.hidden = false 

    } 

и ниже код, чтобы поток Spotify песни:

func playUsingSession(sessionObj:SPTSession!){ 

    if spotifyPlayer == nil { 

     spotifyPlayer = SPTAudioStreamingController(clientId: kSpotifyClientID) 

    } 

    spotifyPlayer?.loginWithSession(sessionObj, callback: { (error : NSError!) -> Void in 
     if error != nil { 

      println("enabling playback got error : \(error)") 

      return 

     } 
     var spotifyTrackUri : NSURL = NSURL(string: "spotify:track:3FREWTEY2uFxOorJZMmZPX")! 
     self.spotifyPlayer!.playURIs([spotifyTrackUri], fromIndex: 0, callback: { (error : NSError!) -> Void in 
      if error != nil { 

       println("\(error)") 

      } 
     }) 

    }) 

} 

ли мне еще нужно обновить токен для последнего sdk? Или что-то не хватает в моем коде?

ответ

6

По умолчанию пользователям необходимо регистрироваться один раз в час для приложений, используя Spotify SDK, если вы не используете поток кода авторизации. Чтобы использовать этот поток, вам нужно настроить сервер для обработки обмена токенами и обновления.

  1. Setup бесплатный сервер с этим один клик развернуть на Heroku https://github.com/adamontherun/SpotifyTokenRefresh

  2. Использование URL сервера, созданного выше добавить следующее при настройке SPTAuth.defaultInstance():

    . SPTAuth.defaultInstance() tokenSwapURL = URL (строка: "https://YOURSERVERNAME.herokuapp.com/swap ") SPTAuth.defaultInstance() tokenRefreshURL = URL (строка:" https://YOURSERVERNAME.herokuapp.com/refresh").

  3. Перед использованием проверки сеанса, если он действует:

    если SPTAuth.defaultInstance() session.isValid()

и если это не называют

SPTAuth.defaultInstance().renewSession(SPTAuth.defaultInstance().session, callback: { (error, session) in 
         if let session = session { 
          SPTAuth.defaultInstance().session = session 
         } 
        }) 
+0

Как можно использовать. Код herokuapp в приложении iOS? – Parthpatel1105

+0

Это довольно удивительно. Большое вам спасибо за это! но я получаю: 'Текст JSON не начинался с массива или объекта и не позволял фрагментам не задаваться.' любая идея? –

+0

'Используя URL-адрес созданного сервера, добавьте следующее при настройке вашего SPTAuth.defaultInstance():' can u plz объясните подробнее – Jack

Смежные вопросы