This commit is contained in:
thecosmos
2019-05-06 21:16:28 +05:30
parent bf61177a3e
commit 1654c55f77
3 changed files with 43 additions and 47 deletions

View File

@@ -1,7 +1,9 @@
import os
from . import configs
from requests_oauthlib import OAuth2Session
from flask import request, session, redirect
from flask import request, session, redirect, jsonify
class DiscordOAuth2Session(object):
@@ -10,6 +12,8 @@ class DiscordOAuth2Session(object):
self.client_id = client_id
self.client_secret = client_secret
self.redirect_uri = redirect_uri
if "http://" in self.redirect_uri:
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "true"
@staticmethod
def __token_updater(token):
@@ -46,3 +50,10 @@ class DiscordOAuth2Session(object):
authorization_response=request.url
)
session["oauth2_token"] = token
def get_json(self):
discord_session = self.__make_session(token=session.get("oauth2_token"))
user = discord_session.get(configs.API_BASE_URL + '/users/@me').json()
guilds = discord_session.get(configs.API_BASE_URL + '/users/@me/guilds').json()
connections = discord_session.get(configs.API_BASE_URL + '/users/@me/connections').json()
return jsonify(user=user, guilds=guilds, connections=connections)

View File

@@ -1,46 +0,0 @@
from . import configs
from requests_oauthlib import OAuth2Session
from flask import current_app, request, session, sessions, redirect
class Session(dict, sessions.SessionMixin):
def to_discord(self, scope=str()):
scope = (request.args.get("scope") or scope).split()
discord_session = OAuth2Session()
def __init__(self, client_id, client_secret, redirect_uri, token_updater=None):
auto_refresh_kwargs = {
"client_id": client_id,
"client_secret": client_secret,
}
super().__init__(
client_id=client_id, redirect_uri=redirect_uri,
auto_refresh_kwargs=auto_refresh_kwargs,
auto_refresh_url=configs.TOKEN_URL, token_updater=token_updater
)
def create_session(self, scope=None):
self.scope = scope
authorization_url, state = self.authorization_url(configs.AUTHORIZATION_BASE_URL)
session["oauth2_state"] = state
return redirect(authorization_url)
class MySessionInterface(sessions.SessionInterface):
def __init__(self, client_id, client_secret, redirect_uri, token_updater=None):
pass
def open_session(self, app, request):
pass
def save_session(self, app, session, response):
class DiscordOAuth2Session(object):
def __init__(self, app):
app.session_interface = Session()