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 ?
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 ?
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.
Je vous conseille de suivre l'article de blog fourni par l'équipe d'Auth0 - Démarrer avec l'authentification Flutter
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.
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 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.