SpotifyLogin is a Swift 4 Framework for authenticating with the Spotify API.
Usage of this framework is bound under the Developer Terms of Use.
SpotifyLogin requires Xcode 9.0+. It is compatible with iOS 9 or later.
You will need to register your app in the Developer Portal.
Make sure to use a unique redirect url and to supply the bundle ID from your app.
After registering, you will receive a client ID and a client secret.
Quick Disclaimer: SpotifyLogin uses the client secret in the source code to simplify token renewal. If needed, please make sure you deploy your own security measures.
Set up SpotifyLogin using any of the methods detailed below (Cocoapods / Carthage / manually).
In Xcode, go to your app's target and select the Info tab. At the bottom, of the screen you will find URL Types, expand the list and create a new one.
Add the app's identifer as the Identifier and the redirect url scheme in URL schemes.
Additioanlly, you will need to add "spotify-action" to LSApplicationQueriesSchemes:
Add the following to your app delegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
SpotifyLogin.shared.configure(clientID: <#T##String#>, clientSecret: <#T##String#>, redirectURL: <#T##URL#>)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
let handled = SpotifyLogin.shared.applicationOpenURL(url) { (error) in }
return handled
}
You can retrieve an access token and check if a user is logged in by:
SpotifyLogin.shared.getAccessToken { (accessToken, error) in
if error != nil {
// User is not logged in, show log in flow.
}
}
This also automatically takes care of renewing expired tokens.
To add the default log in button:
let button = SpotifyLoginButton(viewController: self, scopes: [.streaming, .userLibraryRead])
self.view.addSubview(button)
The scopes define the set of permissions your app will be able to use. For more information about available scopes, see Scopes Documentation
To log out:
SpotifyLogin.shared.logout()
The log in flow is completed in applicationOpenURL. To respond to a successful log in, you can add your own code in the completion handler or respond to the SpotifyLoginSuccessful notification:
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccessful), name: .SpotifyLoginSuccessful, object: nil)
Access the current user's username:
let username = SpotifyLogin.shared.username
To trigger the log in flow from a custom action:
SpotifyLoginPresenter.login(from: self, scopes: [.streaming, .userLibraryRead])
Setting up with CocoaPods
source 'https://github.com/CocoaPods/Specs.git'
pod 'SpotifyLogin', '~> 0.1'
Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate SpotifyLogin into your Xcode project using Carthage, specify it in your Cartfile
:
github "spotify/SpotifyLogin"
This project adheres to the Open Code of Conduct. By contributing, you are expected to honor this code.