Intégration API Sumup dans flutter (workflow d'authentification)
Je suis en train d'essayer de créer une application qui intègre Sumup et notamment la connexion avec un terminal de paiement.
J'utilise le plugin flutter sumup (https://pub.dev/packages/sumup) que j'ai modifié notamment au niveau du login, pour essayer d'intégrer une connexion transparente pour l'utilisateur.
En utilisant cette documentation -> https://developer.sumup.com/docs/authorization/ , j'ai compris que l'utilisateur (qui est le vendeur) devrait se loguer une fois au début, puis je pourrais utiliser le refresh_token pour qu'il se logue ensuite sans rentrer à nouveau ses identifiants.
Je n'ai jamais mis en place de système d'authentification dans mes applis flutter (qui sont très basiques), et donc je n'arrive pas à comprendre le mécanisme, voici ce que je fais :
Code:
1 2 3 4 5 6 7 8
| http.Response response = await http.get(Uri.parse(
"https://api.sumup.com/authorize?response_type=code&client_id=" +
client_id +
"&redirect_uri=myredirecturi"));
if (response.statusCode == 200) {
String data = response.body;
print(data);
} |
Je m'attends à avoir un écran de connexion normalement, pour que le vendeur se connecte et que je reçoive dans data mes code d'authentification. Cela me print ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| I/flutter ( 3950): <!doctype html>
I/flutter ( 3950): <html>
I/flutter ( 3950): <head>
I/flutter ( 3950): <title>SumUp OAuth</title>
I/flutter ( 3950): <meta name="viewport" content="width=device-width, maximum-scale=1">
I/flutter ( 3950): <link rel="icon" href="/favicon.png">
I/flutter ( 3950): </head>
I/flutter ( 3950): <body>
I/flutter ( 3950):
I/flutter ( 3950): <oauth></oauth>
I/flutter ( 3950):
I/flutter ( 3950):
I/flutter ( 3950): <script src="/gateway/oauth.js"></script>
I/flutter ( 3950): </body>
I/flutter ( 3950): </html> |
Je comprends que je dois afficher cette page d'authentification, j'ai donc essayer de passer par un plugin, mais cela m'amène sur la page api.sumup.com/authorize qui reste blanche.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| final callbackUrlScheme = 'myredirecturl';
final url = Uri.https('api.sumup.com', '/authorize', {
'response_type': 'code',
'client_id': client_id,
'redirect_uri': '$callbackUrlScheme:/',
});
final result = await FlutterWebAuth.authenticate(
url: url.toString(), callbackUrlScheme: callbackUrlScheme);
final code = Uri.parse(result).queryParameters['code'];
final response =
await http.post(Uri.parse('https://api.sumup.com/token'), body: {
'client_id': client_id,
'redirect_uri': '$callbackUrlScheme:/',
'grant_type': 'authorization_code',
'code': code,
});
final accessToken = jsonDecode(response.body)['access_token'] as String;
print(accessToken); |
Quelque chose m'échappe, j'ai fais des recherches et suivi des tutos (notamment celui de Auth0) mais je n'arrive pas à comprendre comment l'appliquer pour mon cas.
Merci par avance de votre aide.