Я хотел бы знать, есть ли способ получить токен доступа через OpenID во Flutter (Dart). Я могу сделать это через Postman, и я также могу использовать WebView во Flutter, однако я бы хотел, чтобы приложение (Android) могло открывать браузер для выполнения всего процесса, пока вы не получите желаемый токен ... просто как в Postman.
С Postman я делаю это так:
1- Запрос 1
2 - Результат 2
Я пытался использовать плагин openid_client со следующим кодом, но мне это не удалось. Это дает мне одну ошибку:
E / flutter (6080): Пробный вызов: contains ("openid")
authenticate(Uri uri, String clientId, List<String> scopes) async {
// create the client
var issuer = await Issuer.discover(uri);
var client = new Client(issuer, clientId);
// create a function to open a browser with an url
urlLauncher(String url) async {
//String url2 = issuer.metadata['data'].values.first.toString();
if (await canLaunch(url)) {
await launch(url, forceWebView: true);
} else {
throw 'Could not launch $url';
}
}
// create an authenticator
var authenticator = new Authenticator(client, scopes: scopes, urlLancher: urlLauncher);
// starts the authentication
var c = await authenticator.authorize();
// close the webview when finished
closeWebView();
// return the user info
return await c.getUserInfo();
}
(...)
RaisedButton(
onPressed: () => authenticate(
Uri.parse('https://api.worldoftanks.eu/wot/auth/login/?application_id=xxxxxxxxxxxxxxxxxxxxxxxxxxx&nofollow=1'),
null,
['Access Token', 'account_id', 'expires_at', 'nickname']),
child: Text('OpenID', style: TextStyle(fontSize: 20)),
)
Может ли мне помочь какой-нибудь блестящий ум? Я в правильном направлении или мне следует перейти к другому решению?