@@ -8,7 +8,6 @@ use actix_web::{error, get, web, App, HttpServer};
88use serde:: Deserialize ;
99
1010use oauth2:: basic:: BasicClient ;
11- use oauth2:: reqwest:: async_http_client;
1211use oauth2:: {
1312 AuthUrl , AuthorizationCode , ClientId , CsrfToken , PkceCodeChallenge , RedirectUrl , TokenResponse ,
1413 TokenUrl ,
@@ -141,13 +140,10 @@ fn store_refresh_token_in_key_ring(auth_info: &AuthInfo, refresh_token: String)
141140type Token =
142141 oauth2:: StandardTokenResponse < oauth2:: EmptyExtraTokenFields , oauth2:: basic:: BasicTokenType > ;
143142async fn request_access_token ( auth_info : & AuthInfo ) -> Result < Token > {
144- let client = BasicClient :: new (
145- ClientId :: new ( auth_info. client_id . clone ( ) ) ,
146- None ,
147- AuthUrl :: new ( auth_info. auth_url . clone ( ) ) . unwrap ( ) ,
148- Some ( TokenUrl :: new ( auth_info. token_url . clone ( ) ) . unwrap ( ) ) ,
149- )
150- . set_redirect_uri ( RedirectUrl :: new ( auth_info. redirect_addr . to_string ( ) ) . unwrap ( ) ) ;
143+ let client = BasicClient :: new ( ClientId :: new ( auth_info. client_id . clone ( ) ) )
144+ . set_auth_uri ( AuthUrl :: new ( auth_info. auth_url . clone ( ) ) . unwrap ( ) )
145+ . set_token_uri ( TokenUrl :: new ( auth_info. token_url . clone ( ) ) . unwrap ( ) )
146+ . set_redirect_uri ( RedirectUrl :: new ( auth_info. redirect_addr . to_string ( ) ) . unwrap ( ) ) ;
151147
152148 let ( pkce_challenge, pkce_verifier) = PkceCodeChallenge :: new_random_sha256 ( ) ;
153149
@@ -180,29 +176,36 @@ async fn request_access_token(auth_info: &AuthInfo) -> Result<Token> {
180176 ) ;
181177 let _ = open:: that ( auth_url. to_string ( ) ) ;
182178
179+ let async_http_client = oauth2:: reqwest:: ClientBuilder :: new ( )
180+ . redirect ( reqwest:: redirect:: Policy :: none ( ) )
181+ . build ( )
182+ . expect ( "Failed to request access token: could not create client." ) ;
183+
183184 let auth_code = server_task. await ??;
184185
185186 Ok ( client
186187 . exchange_code ( AuthorizationCode :: new ( auth_code) )
187188 . set_pkce_verifier ( pkce_verifier)
188- . request_async ( async_http_client)
189+ . request_async ( & async_http_client)
189190 . await ?)
190191}
191192
192193async fn refresh_access_token ( auth_info : & AuthInfo ) -> Option < Token > {
193194 let refresh_token = get_refresh_token_from_key_ring ( auth_info) ?;
194195 log:: debug!( "Found refresh token in key ring." ) ;
195196
196- let client = BasicClient :: new (
197- ClientId :: new ( auth_info. client_id . clone ( ) ) ,
198- None ,
199- AuthUrl :: new ( auth_info. auth_url . clone ( ) ) . unwrap ( ) ,
200- Some ( TokenUrl :: new ( auth_info. token_url . clone ( ) ) . unwrap ( ) ) ,
201- ) ;
197+ let client = BasicClient :: new ( ClientId :: new ( auth_info. client_id . clone ( ) ) )
198+ . set_auth_uri ( AuthUrl :: new ( auth_info. auth_url . clone ( ) ) . unwrap ( ) )
199+ . set_token_uri ( TokenUrl :: new ( auth_info. token_url . clone ( ) ) . unwrap ( ) ) ;
200+
201+ let async_http_client = oauth2:: reqwest:: ClientBuilder :: new ( )
202+ . redirect ( reqwest:: redirect:: Policy :: none ( ) )
203+ . build ( )
204+ . expect ( "Failed to refresh access token: could not create client." ) ;
202205
203206 let access_token = client
204207 . exchange_refresh_token ( & oauth2:: RefreshToken :: new ( refresh_token) )
205- . request_async ( async_http_client)
208+ . request_async ( & async_http_client)
206209 . await ;
207210
208211 access_token. ok ( )
0 commit comments