Skip to content

Commit

Permalink
Added parsing of id_token, if present in access token response
Browse files Browse the repository at this point in the history
  • Loading branch information
colinhumber authored and phimage committed Dec 11, 2023
1 parent a04f7b7 commit 6329128
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
5 changes: 5 additions & 0 deletions OAuthSwiftTests/OAuth2SwiftTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class OAuth2SwiftTests: XCTestCase {
let expectation = self.expectation(description: "request should succeed")

var state = ""

if case .code(_, let extractedState) = response {
state = extractedState ?? ""
}
Expand All @@ -90,6 +91,10 @@ class OAuth2SwiftTests: XCTestCase {
waitForExpectations(timeout: DefaultTimeout, handler: nil)

XCTAssertEqual(oauth.client.credential.oauthToken, server.oauth_token)

if case .code = response {
XCTAssertEqual(oauth.client.credential.idToken, self.server.id_token)
}
}

func testJSON_Error_Failure() {
Expand Down
5 changes: 3 additions & 2 deletions OAuthSwiftTests/TestServer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class TestServer {

let oauth_token = "accesskey"
let oauth_token_secret = "accesssecret"
let id_token = "idtoken"
let valid_key = "key"
let valid_secret = "key"

Expand Down Expand Up @@ -82,9 +83,9 @@ class TestServer {

switch self.accessReturnType {
case .json:
return .ok(.json(["access_token":self.oauth_token] as AnyObject))
return .ok(.json(["access_token":self.oauth_token, "id_token":self.id_token] as AnyObject))
case .data:
return .ok(.text("access_token=\(self.oauth_token)" as String))
return .ok(.text("access_token=\(self.oauth_token)&id_token=\(self.id_token)" as String))
}

}
Expand Down
4 changes: 4 additions & 0 deletions Sources/OAuthSwiftClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,10 @@ open class OAuthSwiftClient: NSObject {
return
}

if let idToken = responseParameters["id_token"] as? String {
this.credential.idToken = idToken.safeStringByRemovingPercentEncoding
}

if let refreshToken = responseParameters["refresh_token"] as? String {
this.credential.oauthRefreshToken = refreshToken.safeStringByRemovingPercentEncoding
}
Expand Down
1 change: 1 addition & 0 deletions Sources/OAuthSwiftCredential.swift
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ open class OAuthSwiftCredential: NSObject, NSSecureCoding, Codable {
open var oauthRefreshToken = ""
open var oauthTokenSecret = ""
open var oauthTokenExpiresAt: Date?
open var idToken = ""
open internal(set) var oauthVerifier = ""
open var version: Version = .oauth1
open var signatureMethod: SignatureMethod = .HMAC_SHA1
Expand Down

0 comments on commit 6329128

Please sign in to comment.