Version numbering represents the Swift version, plus a running number representing updates, fixes and new features at the same time. You can also refer to commit logs to get details on what was implemented, fixed and improved.
- Use a simple logger for logging purposes (inspired by @tompson and @ChrisInIssaquah)
- Make
parseAccessTokenResponseData()
public for non-conformant OAuth2 providers (like Facebook) - Add overrideable
normalizeAccessTokenResponseKeys()
andnormalizeRefreshTokenResponseKeys()
(inspired by @ChrisTitos)
- Make sure extra params are passed to refresh token requests (fixes #105)
- The convenience
request(forURL:)
method by default no longer uses locally cached data
- Use ephemeral NSURLSession by default; fixes #96
- Build fix to enable Carthage builds (thanks @davidpeckham !)
- Fix: add optional auth parameters to the authorize URL
- Refactor authentication request creation
- Add
OAuth2ClientCredentialsReddit
to deal with Reddit installed apps special flow - Rename clashing method definitions to fix #99
- Add tvOS build (thanks @davidkraus and @ddengler !)
- Update SwiftKeychain integration (thanks @davidkraus and @ddengler !)
- Expose
keychainAccessMode
(keychain_access_mode
in settings; thanks @tompson !)
- Better error parsing when handling redirect URL in code grants
- Remove implicit web view unwrapping to fix issue #88
- Add capability to abort ongoing authorization with
abortAuthorization()
- Implement embedded auth for OS X 10.10 and newer (thanks @insidegui !)
- Move
autoDismiss
param fromauthorize()
into theauthConfig
struct - Change
openAuthorizeURLInBrowser()
to throw instead of returning a Bool (throwingUnableToOpenAuthorizeURL
instead of returning false) - Add
RequestCancelled
Error - Add
OAuth2CodeGrantLinkedIn
to deal with LinkedIn - Add
OAuth2CodeGrantNoTokenType
to deal with Instagram, Bitly and all others not returningtoken_type
- Add
UTF8DecodeError
- Fix issue #76 (dismissing built-in web view controller in a more robust way)
- Fix issue #75 (refresh tokens not saved to keychain)
- Fix issue #72 (refresh token SNAFU from 2.1)
- Refresh tokens now work for all grants
- Rewrite most parts of the code to use
OAuth2Error
instead ofNSError
- Improvements to password grant
- Properly implement dynamic client registration
- Fix issues #47, #59, #61, #66 and improve behavior in several scenarios
- Fix issue #53, not detecting cancelling the
SFSafariViewController
by the user
- Use
SFSafariViewController
for embedded authorization if used on iOS 9+
- Uses Swift 2.0
- Add flag to force client registration
- Last planned release for Swift 1.2
- Allow to customize the Back button in iOS' login web view.
- Fix “wrong password” detection in password grant, thanks Tim!
- Add
accessTokenAssumeUnexpired
variable to allow storing of access tokens even if "expires_in" is not supplied. You may need to intercept 401s and re-authorize when performing REST requests. - Add
OAuth2DynReg
class to help with dynamic client registration (preliminary/incomplete). - Code refactoring
- Add
OAuth2PasswordGrant
for password grant flow, courtesy of Tim Sneed.
- Add
OAuth2ClientCredentials
for client_credentials flow. - Fix bug where custom authorize parameters would not appear in the embedded iOS view controller (thanks Nate!).
- Make
OAuth2CodeGrant
auto-decide whether to use an “Authorization: Basic ...” header (if the client has a clientSecret) or omit it. The optionsecretInBody
(calledsecret_in_body
in the settings dict) allows to force putting the secret into the request body.
- Client uses refresh-tokens automatically, if available. Use the new
authorize()
method to take advantage of this. - System keychain integration for token storage. Use
keychain
= false to turn this off.
- Support detecting Google's
urn:ietf:wg:oauth:2.0:oob
callback URLs - Improvements when detecting and intercepting callback URLs
- Swift compiler improvements (via use of
final
keyword)
- Swift 1.2 support
- Improve embedded web view controller (iOS only)
- Correctly use www-form-urlencoded parameter strings
- Initial release supporting Swift 1.1