5 votes

Auth0-Comment l'utiliser avec Flutter

J'ai besoin d'utiliser Auth0 avec Flutter mais il n'y a pas de tel SDK dans le site Auth0.

Auth0 œuvre pour créer de tels SDK pour Flutter.

Quelqu'un a-t-il utilisé Auth0 avec Flutter ou que pouvez-vous me conseiller ?

0voto

Harsh Mehta Points 81

Il y a un auth0 paquet pour flutter à utiliser L'API Auth0 fournit des API de connexion, de déconnexion et d'accès pour l'authentification dans votre application. Cependant, vous devez apporter des modifications à l'intérieur de android y ios dans votre projet flutter. Vous devez configurer vos callbacks et les paramètres de votre application pour cela. exemple sur github que vous devriez vérifier.

0voto

Daniel Robotics Points 140

Je vous conseille de suivre l'article de blog fourni par l'équipe d'Auth0 - Démarrer avec l'authentification Flutter

0voto

anthonychwong Points 11

Pour Flutter Web App, je fais un wrapper autour de Auth0 JS SPA SDK.

GitHub : https://github.com/anthonychwong/auth0-flutter-web

Pub.dev : https://pub.dev/packages/auth0_flutter_web

import 'package:auth0_flutter_web/auth0_flutter_web.dart';

Auth0 auth0 = await createAuth0Client(
  Auth0CreateOptions(
    domain: '-- domain of the universal login page --',
    client_id: '-- id of your app --',
  )
);

String token = await auth0.getTokenWithPopup();

Il n'en est qu'à ses débuts et les relations publiques sont les bienvenues.

0voto

Mohamed Haris Points 1

C'est très simple de commencer avec flutter auth0

Créez une classe pour auth0 et appelez-la aux endroits où vous en avez besoin. Mais assurez-vous également de définir les constantes AUTH0_DOMAIN , AUTH0_CLIENT_ID , AUTH0_REDIRECT_URI , AUTH0_ISSUER

class Auth0 {

  final FlutterAppAuth appAuth = FlutterAppAuth();

  Map<String, Object> parseIdToken(String idToken) {
    final List<String> parts = idToken.split('.');
    assert(parts.length == 3);
    return jsonDecode(
        utf8.decode(base64Url.decode(base64Url.normalize(parts[1]))));
  }

  Future<Map<String, Object>> getUserDetails(String accessToken) async {
    const String url = 'https://$AUTH0_DOMAIN/userinfo';
    final http.Response response = await http.get(
      url,
      headers: <String, String>{'Authorization': 'Bearer $accessToken'},
    );
    if (response.statusCode == 200) {
      return jsonDecode(response.body);
    } else {
      throw Exception('Failed to get user details');
    }
  }

  Future<void> loginAction() async {
      isBusy = true;
      errorMessage = 'Error! - ';

    try {
      final AuthorizationTokenResponse result =
          await appAuth.authorizeAndExchangeCode(
        AuthorizationTokenRequest(
          AUTH0_CLIENT_ID,
          AUTH0_REDIRECT_URI,
          issuer: 'https://$AUTH0_DOMAIN',
          scopes: <String>['openid', 'email', 'profile', 'offline_access'],
          promptValues: ['login']
        ),
      );

      final Map<String, Object> idToken = parseIdToken(result.idToken);
      final Map<String, Object> profile =
          await getUserDetails(result.accessToken);

        isBusy = false;
        name = idToken['name'];
        email = profile['email'];
        picture = profile['picture'];

    } on Exception catch (e, s) {
      print('login error: $e - stack: $s');

        isBusy = false;
        errorMessage = e.toString();
    }
  }

Au lieu d'utiliser un booléen pour vérifier isLoggedIn, essayez d'enregistrer le jeton dans le localstorage et cela définira l'état tel quel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X