https://github.com/spotify/SpotifyLogin
Swift framework for authenticating with the Spotify API
https://github.com/spotify/SpotifyLogin
Last synced: 7 months ago
JSON representation
Swift framework for authenticating with the Spotify API
- Host: GitHub
- URL: https://github.com/spotify/SpotifyLogin
- Owner: spotify
- License: apache-2.0
- Archived: true
- Created: 2017-08-04T14:07:41.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-03-09T18:31:24.000Z (about 5 years ago)
- Last Synced: 2024-11-30T22:18:23.643Z (over 1 year ago)
- Language: Swift
- Homepage:
- Size: 146 KB
- Stars: 348
- Watchers: 31
- Forks: 40
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - SpotifyLogin
- awesome-swift - SpotifyLogin - Authenticate with the Spotify API. (Libs / Authentication)
- awesome-swift - SpotifyLogin - Authenticate with the Spotify API. (Libs / Authentication)
- awesome-ios-architecture - SpotifyLogin
- fucking-awesome-swift - SpotifyLogin - Authenticate with the Spotify API. (Libs / Authentication)
- awesome-ios-star - SpotifyLogin
- awesome-swift - SpotifyLogin - Swift framework for authenticating with the Spotify API ` 📝 2 years ago ` (Authentication [🔝](#readme))
- fucking-awesome-ios - SpotifyLogin
README

[](https://travis-ci.org/spotify/SpotifyLogin)
[](http://cocoapods.org/?q=SpotifyLogin)
[](https://github.com/Carthage/Carthage)
# SpotifyLogin
SpotifyLogin is a Swift 5 Framework for authenticating with the Spotify API.
Usage of this framework is bound under the [Developer Terms of Use](https://developer.spotify.com/developer-terms-of-use/).
## Usage
### Disclaimer
SpotifyLogin is appropriate for prototyping and non-commercial use only.
**If your app is meant for commercial production usage, SpotifyLogin can NOT be used.**
### Compatibility
SpotifyLogin requires Xcode 10.2+. It is compatible with iOS 9 or later.
### Pre-requisites
You will need to register your app in the [Developer Portal](https://developer.spotify.com/my-applications/#!/applications).
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.
### Set up SpotifyLogin
Set up SpotifyLogin using any of the methods detailed below (Cocoapods / Carthage / manually).
### Set up info.plist
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**.
Additionally, you will need to add "spotify-action" to the LSApplicationQueriesSchemes key:

### Set up your AppDelegate
Add the following to your app delegate:
```swift
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
}
```
### Check if a user is logged in.
You can retrieve an access token and check if a user is logged in by:
```swift
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.
### Log in / Log out
To add the default log in button:
```swift
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](https://developer.spotify.com/web-api/using-scopes/)
To log out:
```swift
SpotifyLogin.shared.logout()
```
### Update UI after successful log in.
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:
```swift
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccessful), name: .SpotifyLoginSuccessful, object: nil)
```
### Additional features
Access the current user's username:
```swift
let username = SpotifyLogin.shared.username
```
To trigger the log in flow from a custom action:
```swift
SpotifyLoginPresenter.login(from: self, scopes: [.streaming, .userLibraryRead])
```
## Setting up
### Setting up with [CocoaPods](http://cocoapods.org/?q=SpotifyLogin)
```ruby
source 'https://github.com/CocoaPods/Specs.git'
pod 'SpotifyLogin', '~> 0.1'
```
### Setting up with Carthage
[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
```bash
$ brew update
$ brew install carthage
```
To integrate SpotifyLogin into your Xcode project using Carthage, specify it in your `Cartfile`:
```ogdl
github "spotify/SpotifyLogin"
```
## Code of conduct
This project adheres to the [Open Code of Conduct][code-of-conduct]. By contributing, you are expected to honor this code.
[code-of-conduct]: https://github.com/spotify/code-of-conduct/blob/master/code-of-conduct.md
## Additional information
[Spotify Developer Portal](https://developer.spotify.com/technologies/spotify-ios-sdk/) | [API Reference](https://spotify.github.io/ios-sdk/)