Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from urllib.parse import urlparse, parse_qs
- from http.server import BaseHTTPRequestHandler, HTTPServer
- import json
- import webbrowser
- import requests
- SERVER_URL = "http://localhost:8001"
- # server_url = "https://devel.blenderkit.com"
- CLIENT_ID = "IdFRwa3SGA8eMpzhRVFMg5Ts8sPK93xBjif93x0F"
- PORT = 62485
- # PORT = 1234
- def _get_tokens(server_url, authorization_code=None, refresh_token=None, grant_type="authorization_code"):
- data = {
- "grant_type": grant_type,
- "state": "random_state_string",
- "client_id": CLIENT_ID,
- "scopes": "read write",
- }
- if authorization_code:
- data['code'] = authorization_code
- if refresh_token:
- data['refresh_token'] = refresh_token
- print(data)
- response = requests.post(
- '%s/o/token/' % server_url,
- data=data
- )
- print(response.content)
- if response.status_code != 200:
- return None, None
- refresh_token = json.loads(response.content)['refresh_token']
- access_token = json.loads(response.content)['access_token']
- return access_token, refresh_token
- def get_new_token(server_url=SERVER_URL):
- class HTTPServerHandler(BaseHTTPRequestHandler):
- def do_GET(self):
- self.send_response(200)
- self.send_header('Content-type', 'text/html')
- self.end_headers()
- if 'code' in self.path:
- self.auth_code = self.path.split('=')[1]
- # Display to the user that they no longer need the browser window
- self.wfile.write(bytes('<html><h1>You may now close this window.</h1></html>', 'utf-8'))
- qs = parse_qs(urlparse(self.path).query)
- self.server.authorization_code = qs['code'][0]
- webbrowser.open_new(
- "%s/o/authorize?client_id=%s&state=random_state_string&response_type=code&"
- "redirect_uri=http://localhost:%s/consumer/exchange/" % (server_url, CLIENT_ID, PORT),
- )
- httpServer = HTTPServer(('localhost', PORT), HTTPServerHandler)
- httpServer.handle_request()
- authorization_code = httpServer.authorization_code
- return _get_tokens(server_url, authorization_code=authorization_code)
- def get_refreshed_token(refresh_token, server_url=SERVER_URL):
- return _get_tokens(server_url, refresh_token=refresh_token, grant_type="refresh_token")
- auth_token, refresh_token = get_new_token()
- print("auth token: %s, refresh_token: %s" % (auth_token, refresh_token))
- auth_token, refresh_token = get_refreshed_token(refresh_token)
- print("auth_token: %s, new refresh_token: %s" % (auth_token, refresh_token))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement