Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.59 KB | None | 0 0
  1. from urllib.parse import urlparse, parse_qs
  2. from http.server import BaseHTTPRequestHandler, HTTPServer
  3. import json
  4. import webbrowser
  5.  
  6. import requests
  7.  
  8. SERVER_URL = "http://localhost:8001"
  9. # server_url = "https://devel.blenderkit.com"
  10. CLIENT_ID = "IdFRwa3SGA8eMpzhRVFMg5Ts8sPK93xBjif93x0F"
  11. PORT = 62485
  12. # PORT = 1234
  13.  
  14.  
  15. def _get_tokens(server_url, authorization_code=None, refresh_token=None, grant_type="authorization_code"):
  16.     data = {
  17.         "grant_type": grant_type,
  18.         "state": "random_state_string",
  19.         "client_id": CLIENT_ID,
  20.         "scopes": "read write",
  21.     }
  22.     if authorization_code:
  23.         data['code'] = authorization_code
  24.     if refresh_token:
  25.         data['refresh_token'] = refresh_token
  26.     print(data)
  27.  
  28.     response = requests.post(
  29.         '%s/o/token/' % server_url,
  30.         data=data
  31.     )
  32.     print(response.content)
  33.     if response.status_code != 200:
  34.         return None, None
  35.     refresh_token = json.loads(response.content)['refresh_token']
  36.     access_token = json.loads(response.content)['access_token']
  37.     return access_token, refresh_token
  38.  
  39.  
  40. def get_new_token(server_url=SERVER_URL):
  41.     class HTTPServerHandler(BaseHTTPRequestHandler):
  42.         def do_GET(self):
  43.             self.send_response(200)
  44.             self.send_header('Content-type', 'text/html')
  45.             self.end_headers()
  46.             if 'code' in self.path:
  47.                 self.auth_code = self.path.split('=')[1]
  48.                 # Display to the user that they no longer need the browser window
  49.                 self.wfile.write(bytes('<html><h1>You may now close this window.</h1></html>', 'utf-8'))
  50.                 qs = parse_qs(urlparse(self.path).query)
  51.                 self.server.authorization_code = qs['code'][0]
  52.  
  53.     webbrowser.open_new(
  54.         "%s/o/authorize?client_id=%s&state=random_state_string&response_type=code&"
  55.         "redirect_uri=http://localhost:%s/consumer/exchange/" % (server_url, CLIENT_ID, PORT),
  56.     )
  57.     httpServer = HTTPServer(('localhost', PORT), HTTPServerHandler)
  58.     httpServer.handle_request()
  59.     authorization_code = httpServer.authorization_code
  60.     return _get_tokens(server_url, authorization_code=authorization_code)
  61.  
  62.  
  63. def get_refreshed_token(refresh_token, server_url=SERVER_URL):
  64.     return _get_tokens(server_url, refresh_token=refresh_token, grant_type="refresh_token")
  65.  
  66.  
  67. auth_token, refresh_token = get_new_token()
  68. print("auth token: %s, refresh_token: %s" % (auth_token, refresh_token))
  69. auth_token, refresh_token = get_refreshed_token(refresh_token)
  70. print("auth_token: %s, new refresh_token: %s" % (auth_token, refresh_token))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement