Oberlin started his youth football with FC Étoile-Broye, FC Thierrens and Lausanne-Sport, with whom he won an Under-15 championship in Switzerland.[2]
Zürich
In 2011 he moved to FC Zürich, and signed his first professional contract with the club in 2014. While he was initially promised playing time in the first team, he was used sparingly at the club, and for that reason Oberlin sought to transfer away from the club. He was sought after by Manchester United in England, but would've started in their academy with the Under-18 team. For that reason, Oberlin chose to transfer to Red Bull Salzburg in Austria, where a path to the first team was clearer.[3] Oberlin was often compared with fellow Cameroon-born, Swiss international Breel Embolo, and Zürich chairman Ancillo Capella remarked upon Oberlin's departure that he did not want "hysterical mothers claiming that their sons are at least as good as Embolo".
Salzburg
On 30 June 2015, Red Bull Salzburg made the announcement that they had signed a three-year contract with Oberlin.[4] Oberlin scored his first goal with Salzburg in his second game with the club, against Rapid Wien on 1 August, after coming on as a second-half substitute. He ended up splitting his first season with Salzburg and their farm club, Liefering. He scored three goals with Salzburg, and seven with Liefering in the Erste Liga. Oberlin received an offer from Red Bull parent club RB Leipzig in the German Bundesliga, but declined, citing the importance of playing first team football.[5]
Loan to Rheindorf Altach
Oberlin was loaned out to fellow Austrian Football Bundesliga club Rheindorf Altach for the 2016–17 season. Oberlin got off to a good start with Altach, as he scored six goals in his first five games with the club. He finished the first half of the season with nine goals, second in the league to Deni Alar, as Altach were the surprise leaders of the league at the halfway point of the season.[6] Oberlin was recalled by RB Salzburg at that point, and he found the back of the net on his first match back, scoring the only goal in a 1–0 win over Mattersburg.[7] He made three more appearances before missing nearly two months with a muscle tear in his thigh, picked up while on international duty with the Swiss under-20 team.[8] Expected to miss the rest of the season, Oberlin returned in time to make a substitute appearance against his former club that season, Altach, in the final game.[9] Altach were in fourth by that point in the season, and Salzburg won 1–0 as they ran away with the championship, their fourth in a row.
Basel
On 20 June 2017, FC Basel announced that they had acquired Oberlin on loan from Salzburg, with the option of a definite transfer.[10] He joined Basel's first team for their 2017–18 season under head coach Raphaël Wicky. On 15 May 2018 Basel pulled this optioned and signed him definitively.[11] Oberlin played his domestic league debut for the club in the away game in the Stockhorn Arena on 5 August 2017. He scored his first goal for his new club in same game, it was the last goal of the match, as Basel won 3–0 against Thun.[12]
Basel, as champions of the Swiss Super League the previous year, earned a spot in the group stage of the Champions League. Oberlin appeared as a substitute against Manchester United at Old Trafford, but started for Basel against Portuguese club Benfica. On 27 September 2017, Oberlin's 20th birthday, he played in the starting eleven in the Champions League Group stage match against Benfica. Basel ran out 5–0 victors at St. Jakob-Park, with Oberlin scoring two goals and assisting a third, highlighted by his full-field sprint after heading away a Benfica corner to finish off a Basel counter-attack with a goal within just 12 seconds after the corner kick.[13][14] Oberlin made four starts in the group stage, scoring four goals as Basel advanced to the knockout stages, ending second in their group behind Manchester United. Drawn against Manchester City, Basel lost 5–2 on aggregate, but they did defeat City in the second leg in Manchester 2–1, and Oberlin was in the starting eleven both legs.
In the following season, under new trainer Marcel Koller, Basel won the Swiss Cup in the 2018–19 competition. In the first round Basel beat FC Montlingen 3–0, in the second round Echallens Région 7–2 and in the round of 16 Winterthur 1–0. In the quarter-finals Sion were defeated 4–2 after extra time and in the semi-finals Zürich were defeated 3–1. All these games were played away from home. The final was held on the 19 May 2019 in the Stade de Suisse Wankdorf Bern against Thun. Striker Albian Ajeti scored the first goal, Fabian Frei the second for Basel, then Dejan Sorgić netted a goal for Thun, but the end result was 2–1 for Basel.[15] Oberlin played in two cup games and scored a goal in the second round against Echallens Région.
Loan to Empoli
On 31 January 2019, the last day of the 2018–19 winter transfer window, Oberlin moved to Serie A side Empoli F.C. on loan for the rest of the season with Empoli securing an option to make the signing permanent.[16] Empoli did not pull the option for the permanent signing.
Loan to Zulte Waregem
On 1 July 2019, Oberlin moved to Belgian First Division A to join S.V. Zulte Waregem on a 1 year loan with an option to make the signing permanent.[17] Zulte Waregem did not decide on their option of a permanent transfer.
Return to Basel
After his loan period Oberlin returned to Basel for the 2020–21 season under head coach Ciriaco Sforza. He played just one test game and the match in the third qualifying round of the 2020–21 UEFA Europa League against Anorthosis Famagusta FC as he was substituted in during the 76th minute.[18] Things did not work out between Sforza and Oberlin and he did not play a further game. On 5 December 2020 Basel announced that Oberlin's contract had been dissolved.[19] Between the years 2017 and 2020 Oberlin played in a total of 79 games for Basel scoring a total of 15 goals. 46 of these games were in the Swiss Super League, seven in the Swiss Cup, 13 in the UEFA competitions (Champions League and Europa League) and 13 were friendly games. He scored five goals in the domestic league, two in the cup, four in the Champions League and the other four were scored during the test games.[20]
On 28 July 2021, Oberlin signed a three-year contract with Servette FC to play in the Swiss Super League.[22] He made his competitive debut for Servette on 22 August in a 4–1 league win over FC Luzern, coming off the bench in the 68th minute alongside Ronny Rodelin, and immediately contributed with an assist in the same minute to a goal scored by Rodelin.[23] Oberlin made ten appearances in his first six months at the club, all as a substitute.[24]
Oberlin received his first call to the Switzerland national football team for friendlies against Greece and Panama in March 2018.[26] Born in Cameroon, Oberlin moved to Switzerland at the age of 9, and has participated in their youth ranks from the age of 14.[27] He made his debut on 23 March 2018 in a game against Greece.[28]