1- import os
2- import requests
3- import jwt
41import time
5- import json
62import webbrowser
7- import http .server
8- from urllib .parse import urlencode , parse_qs
3+
4+ import requests
5+
96
107def get_discovery_document (url ):
118 response = requests .get (url )
129 return response .json ()
1310
1411
1512def request_device_code (discovery_doc , client_credentials ):
16- data = {}
13+ data = {}
1714 data .update (client_credentials )
18- data .update ({'scope' : 'offline_access' })
19- response = requests .post (
20- discovery_doc ["device_authorization_endpoint" ], data = data
21- )
15+ data .update ({"scope" : "offline_access" })
16+ response = requests .post (discovery_doc ["device_authorization_endpoint" ], data = data )
2217 if response .status_code == 200 :
2318 return response .json ()
2419 else :
@@ -27,14 +22,11 @@ def request_device_code(discovery_doc, client_credentials):
2722 return None
2823
2924
30-
31- def poll_for_access_token (
32- discovery_doc , client_credentials , device_code , interval , timeout
33- ):
25+ def poll_for_access_token (discovery_doc , client_credentials , device_code , interval , timeout ):
3426 payload = {
3527 "grant_type" : "urn:ietf:params:oauth:grant-type:device_code" ,
3628 "device_code" : device_code ,
37- "client_id" : client_credentials ["client_id" ]
29+ "client_id" : client_credentials ["client_id" ],
3830 }
3931 start_time = time .time ()
4032 print ("\n Waiting for device to be authorized ..." )
@@ -59,13 +51,10 @@ def device_login(discovery_doc, client_credentials):
5951 verification_uri_complete = device_code_response .get ("verification_uri_complete" , None )
6052 webbrowser .open (verification_uri_complete )
6153 if verification_uri_complete :
62- print (
63- f"The following URL has been opened in your browser: { verification_uri_complete } "
64- )
54+ print (f"The following URL has been opened in your browser: { verification_uri_complete } " )
6555 else :
66- print (f "Something went wrong" )
56+ print ("Something went wrong" )
6757
68-
6958 interval = device_code_response ["interval" ]
7059 timeout = device_code_response ["expires_in" ]
7160 device_login = poll_for_access_token (
@@ -83,4 +72,4 @@ def device_login(discovery_doc, client_credentials):
8372 return None
8473 else :
8574 print ("Failed to obtain device code" )
86- return None
75+ return None
0 commit comments