Я пытаюсь аутентифицировать мое приложение для флаттера, чтобы оно пропускало через openid_client
, следуя примеру репо, я написал функцию аутентификации, подобную этой
authenticate() async {
// parameters here just for the sake of the question
var uri = Uri.parse('https://keycloak-url/auth/realms/myrealm');
var clientId = 'my_client_id';
var scopes = List<String>.of(['openid', 'profile']);
var port = 4200;
var redirectUri = Uri.parse('http://localhost:4200');
var issuer = await Issuer.discover(uri);
var client = new Client(issuer, clientId);
urlLauncher(String url) async {
if (await canLaunch(url)) {
await launch(url, forceWebView: true);
} else {
throw 'Could not launch $url';
}
}
var authenticator = new Authenticator(client,
scopes: scopes,
port: port,
urlLancher: urlLauncher,
redirectUri: redirectUri);
var c = await authenticator.authorize();
closeWebView();
var token= await c.getTokenResponse();
print(token);
return token;
}
когда я вызываю функцию, появляется всплывающее окно веб-просмотра, и я могу войти через keycloak, но когда закрывается всплывающее окно, я получаю эту ошибку при c.getTokenResponse()
:
Произошло исключение. NoSuchMethodError (NoSuchMethodError: Получатель 'length' был вызван по нулю. Получатель: null Пробный вызов: длина)
проверка учетных данных c
, я вижу, что TokenResponse имеет только "состояние", Поля "session_state" и "code"
что мне не хватает?