6
は、私は私のアプリで楽しんでるログインを持って作られた自動ログインを試みる:Spotifyはセッション管理
ログイン機能
func getSpotifyToken(fromController controller: UIViewController, success: (spotifyToken: String?) -> Void, failure: (error: NSError?) -> Void) {
loginSuccessBlock = success
loginFailureBlock = failure
SPTAuth.defaultInstance().clientID = SpotifyClientID
SPTAuth.defaultInstance().redirectURL = NSURL(string: SpotifyRedirectURI)
SPTAuth.defaultInstance().requestedScopes = [SPTAuthStreamingScope, SPTAuthPlaylistReadPrivateScope]
let spotifyLoginController = SPTAuthViewController.authenticationViewController()
spotifyLoginController.delegate = self
spotifyLoginController.clearCookies {() -> Void in
controller.presentViewController(spotifyLoginController, animated: true, completion: nil)
}
}
チェックセッションが存在する場合
private func spotifyConnected() -> Bool {
if SPTAuth.defaultInstance().session == nil {
self.loadSpotifySession()
}
return SPTAuth.defaultInstance().session != nil
}
セッションを保存する
private func saveSpotifySession() {
let sessionData = NSKeyedArchiver.archivedDataWithRootObject(SPTAuth.defaultInstance().session)
NSUserDefaults.standardUserDefaults().setObject(sessionData, forKey: Spotify_Session_Key)
NSUserDefaults.standardUserDefaults().synchronize()
}
ロードセッション
private func loadSpotifySession() {
if let sessionData = NSUserDefaults.standardUserDefaults().objectForKey(Spotify_Session_Key) as? NSData {
let session = NSKeyedUnarchiver.unarchiveObjectWithData(sessionData) as! SPTSession
SPTAuth.defaultInstance().session = session
}
}
セッションを更新 -
func renewSpotifySession() {
guard spotifyConnected() else {
return
}
SPTAuth.defaultInstance().renewSession(SPTAuth.defaultInstance().session) { (error: NSError!, session: SPTSession!) -> Void in
if session != nil {
SPTAuth.defaultInstance().session = session
} else {
print("Failed to refresh spotify session")
}
}
}
renewSessionリターンnilを起動アプリで呼び出します。 私はrefreshTokenに関するいくつかの情報を見ましたが、私はそれを捕まえることができます。
私はスポットセッションを更新できますか?多分私は間違ったことをしました
:あなたはログインまたはセッションを更新したい場合、その後
を、あなたはこのようなものを持つことができます私はサーバ上でスワップとリフレッシュ機能を実装し、これらのURLをSPTAuth()に追加する必要があります。 Spotifyはバックエンドを使用して自分のトークンを自動的に更新しますか? – Viktor
私は自動的には言わないでしょう - 定期的に有効なトークンを持っていることを確認し、必要に応じて更新する必要があります。トークンの有効期限は60分です。 – brki
私が間違っていると私を訂正してください: サーバーでスワップと更新機能を追加し、それらのURLをSTPAuth()に追加します。ログイン後、私は1時間の有効期限を持つaccessTokenを受け取ります。クライアントを閉じて2時間後にもう一度開いて "loginOrRenewSession"を呼び出すと、セッションが復元されますか?または、サーバー上のすべてのユーザーのアクセストークンを定期的に手動で更新する必要がありますか? – Viktor