Oakley joined AFC Wimbledon at the age of eleven, and progressed through the youth ranks. On 15 February 2014, he was named as a substitute in a 1–0 league defeat at Portsmouth. He signed a professional contract in May 2014, and scored just days later in the 2014 London Senior Cup final win over Metropolitan Police. Oakley was ruled out of the opening two months of the 2014–15 season with a hamstring injury. On 7 October 2014, he marked his return in a 4–0 defeat to Charlton Athletic in the U21 Premier League Cup. On 1 November 2014, he made his Football League debut as a late substitute in a 2–0 loss at Northampton Town. On 30 October 2015, Oakley joined affiliate Isthmian Premier Division side Kingstonian on a one-month loan. He made his debut the following day, scoring in a 5–1 FA Trophy win at Leatherhead. He managed just 12 minutes in his second appearance – a 1–0 victory over Enfield Town – before suffering from injury. A grade two hamstring tear ruled him out for eight weeks and his loan spell was ended prematurely. In January 2016, Oakley suffered a broken ankle during a training session, ruling him out for the remainder of the 2015–16 season. On 19 July 2016, he made his first appearance after the injury in a pre-season outing at Raynes Park Vale. On 8 November 2016, he made his first appearance of the season for the senior squad in a 2–0 EFL Trophy defeat at Newport County. On 18 November 2016, his 21st birthday, Oakley joined National League South club Welling United on a one-month loan. Making his debut in a 3–1 defeat at Hampton & Richmond Borough, he scored his first goal for the club a week later in a 1–0 FA Trophy win at Concord Rangers. He added his second of the season in the next round of the cup, completing the scoring in an 8–1 win over Hythe Town. On 16 December 2016, Oakley's loan at Welling was extended by a further month. On 17 March 2017, Oakley joined National League side Maidstone United on a one-month loan deal.
Oakley signed for Scottish Championship club Inverness Caledonian Thistle in July 2017. He scored his first goal for the club in a 4–1 friendly win at Brora Rangers. He then scored his first competitive goal in Inverness's first game of the season, the opening game of the Scottish League Cup group stages, a 3–0 home win against Brechin City. He started in the following match, a 0–0 draw away at Stirling Albion which resulted in a 2–0 penalty shootout a win for ICT, the lowest scoring penalty shootout in Scottish football. His second competitive goal for Inverness came in a 2–1 win away to Forfar Athletic, although this wasn't enough to prevent them exiting the League Cup. On 30 December 2017, with Inverness down to ten men and losing 2–1 against bottom of the table Brechin City, Oakley came on as a substitute and netted twice to give Inverness the win. On his Scottish Cup debut, he scored a late goal in a 2–2 draw v Dundee, earning Inverness a replay at home.
In January 2019, Oakley moved to Hamilton Academical. On 27 February 2019, he scored the opening goal as Hamilton won 2–0 away to Aberdeen, with the goal drawing comparisons to Marco van Basten.
Pirin Blagoevgrad
In June 2020, he signed a two-year contract with Bulgarian club Pirin Blagoevgrad.