diff --git a/flask_discord/_http.py b/flask_discord/_http.py index f5b9335..ad35dda 100644 --- a/flask_discord/_http.py +++ b/flask_discord/_http.py @@ -8,7 +8,7 @@ import abc from . import configs from . import exceptions -from flask import session +from flask import session, request from collections.abc import Mapping from requests_oauthlib import OAuth2Session @@ -58,6 +58,14 @@ class DiscordOAuth2HttpClient(abc.ABC): def _token_updater(token): session["DISCORD_OAUTH2_TOKEN"] = token + def _fetch_token(self): + discord = self._make_session(state=session.get("DISCORD_OAUTH2_STATE")) + return discord.fetch_token( + configs.DISCORD_TOKEN_URL, + client_secret=self.__client_secret, + authorization_response=request.url + ) + def _make_session(self, token: str = None, state: str = None, scope: list = None) -> OAuth2Session: """A low level method used for creating OAuth2 session. diff --git a/flask_discord/client.py b/flask_discord/client.py index 7c0390d..2f4daae 100644 --- a/flask_discord/client.py +++ b/flask_discord/client.py @@ -91,12 +91,7 @@ class DiscordOAuth2Session(_http.DiscordOAuth2HttpClient): """ if request.values.get("error"): return request.values["error"] - discord = self._make_session(state=session.get("DISCORD_OAUTH2_STATE")) - token = discord.fetch_token( - configs.DISCORD_TOKEN_URL, - client_secret=self.__client_secret, - authorization_response=request.url - ) + token = self._fetch_token() self._token_updater(token) def revoke(self):