@@ -23,29 +23,33 @@ def get_state_parameter(request_args, kwargs):
2323 return _state
2424
2525
26- def pick_redirect_uri (context , request_args = None ):
26+ def pick_redirect_uri (context ,
27+ request_args : Optional [Union [Message , dict ]] = None ,
28+ response_type : Optional [str ] = '' ):
29+ if request_args is None :
30+ request_args = {}
31+
2732 if 'redirect_uri' in request_args :
2833 return request_args ["redirect_uri" ]
2934
3035 if context .callback :
31- _conf_resp_types = context .behaviour .get ('response_types' , [])
32- _response_type = request_args .get ('response_type' )
33- if not _response_type and _conf_resp_types :
34- _response_type = _conf_resp_types [0 ]
35-
36- request_args ['response_type' ] = _response_type
36+ if not response_type :
37+ _conf_resp_types = context .behaviour .get ('response_types' , [])
38+ response_type = request_args .get ('response_type' )
39+ if not response_type and _conf_resp_types :
40+ response_type = _conf_resp_types [0 ]
3741
3842 _response_mode = request_args .get ('response_mode' )
3943
4044 if _response_mode == 'form_post' :
4145 redirect_uri = context .callback ['form_post' ]
42- elif _response_type == 'code' :
46+ elif response_type == 'code' :
4347 redirect_uri = context .callback ['code' ]
4448 else :
4549 redirect_uri = context .callback ['implicit' ]
4650
4751 logger .debug (
48- f"pick_redirect_uris: response_type={ _response_type } , response_mode={ _response_mode } , "
52+ f"pick_redirect_uris: response_type={ response_type } , response_mode={ _response_mode } , "
4953 f"redirect_uri={ redirect_uri } " )
5054 else :
5155 redirect_uri = context .redirect_uris [0 ]
@@ -56,7 +60,8 @@ def pick_redirect_uri(context, request_args=None):
5660def pre_construct_pick_redirect_uri (request_args : Optional [Union [Message , dict ]] = None ,
5761 service : Optional [Service ] = None , ** kwargs ):
5862 _context = service .client_get ("service_context" )
59- request_args ["redirect_uri" ] = pick_redirect_uri (_context , request_args )
63+ request_args ["redirect_uri" ] = pick_redirect_uri (_context ,
64+ request_args = request_args )
6065 return request_args , {}
6166
6267
0 commit comments