Par coderoe · 8 min de lecture

Dans ce tutoriel, nous allons intégrer Appwrite comme backend dans une application Expo React Native. Appwrite est une plateforme Backend-as-a-Service (BaaS) open-source qui fournit authentification, base de données, stockage de fichiers et bien plus encore.
Avant de commencer, assurez-vous d'avoir :
Commencez par installer les packages nécessaires :
npx expo install react-native-appwrite react-native-url-polyfill
com.votreapp.expo)Créez un fichier pour configurer Appwrite dans votre projet :
src/lib/appwrite.ts (ou .js si vous n'utilisez pas TypeScript)
import { Client, Account, Databases, Storage } from 'react-native-appwrite';
// Configuration
const APPWRITE_ENDPOINT = 'https://cloud.appwrite.io/v1';
const APPWRITE_PROJECT_ID = 'VOTRE_PROJECT_ID'; // Remplacez par votre Project ID
// Initialiser le client Appwrite
const client = new Client();
client
.setEndpoint(APPWRITE_ENDPOINT)
.setProject(APPWRITE_PROJECT_ID)
.setPlatform('com.votreapp.expo'); // Votre package name Android ou bundle ID iOS
// Exporter les services
export const account = new Account(client);
export const databases = new Databases(client);
export const storage = new Storage(client);
export { client };
Points importants :
VOTRE_PROJECT_ID par l'ID de votre projet AppwriteAPPWRITE_ENDPOINT vers votre URLsetPlatform() doit correspondre à ce que vous avez configuré dans la console AppwriteImportez le polyfill au début de votre fichier principal (App.tsx ou app/_layout.tsx pour Expo Router) :
import 'react-native-url-polyfill/auto';
import { account } from './src/lib/appwrite';
Voici un exemple complet d'écran de connexion/inscription :
src/screens/AuthScreen.tsx
import React, { useState } from 'react';
import { View, TextInput, Button, Text, StyleSheet, Alert } from 'react-native';
import { account } from '../lib/appwrite';
import { ID } from 'react-native-appwrite';
export default function AuthScreen() {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [name, setName] = useState('');
// Inscription
const handleSignUp = async () => {
try {
await account.create(
ID.unique(), // Génère un ID unique
email,
password,
name
);
Alert.alert('Succès', 'Compte créé avec succès !');
// Connecter automatiquement après inscription
await handleLogin();
} catch (error: any) {
Alert.alert('Erreur', error.message);
}
};
// Connexion
const handleLogin = async () => {
try {
await account.createEmailPasswordSession(email, password);
Alert.alert('Succès', 'Connexion réussie !');
// Naviguer vers votre écran principal
} catch (error: any) {
Alert.alert('Erreur', error.message);
}
};
// Déconnexion
const handleLogout = async () => {
try {
await account.deleteSession('current');
Alert.alert('Succès', 'Déconnexion réussie');
} catch (error: any) {
Alert.alert('Erreur', error.message);
}
};
// Récupérer l'utilisateur actuel
const getCurrentUser = async () => {
try {
const user = await account.get();
Alert.alert('Utilisateur', `Connecté en tant que: ${user.email}`);
} catch (error: any) {
Alert.alert('Info', 'Aucun utilisateur connecté');
}
};
return (
<View style={styles.container}>
<Text style={styles.title}>Appwrite Auth</Text>
<TextInput
style={styles.input}
placeholder="Nom"
value={name}
onChangeText={setName}
/>
<TextInput
style={styles.input}
placeholder="Email"
value={email}
onChangeText={setEmail}
autoCapitalize="none"
keyboardType="email-address"
/>
<TextInput
style={styles.input}
placeholder="Mot de passe"
value={password}
onChangeText={setPassword}
secureTextEntry
/>
<View style={styles.buttonContainer}>
<Button title="Inscription" onPress={handleSignUp} />
<Button title="Connexion" onPress={handleLogin} />
<Button title="Déconnexion" onPress={handleLogout} color="red" />
<Button title="Utilisateur actuel" onPress={getCurrentUser} color="gray" />
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
padding: 20,
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 20,
textAlign: 'center',
},
input: {
borderWidth: 1,
borderColor: '#ddd',
padding: 10,
marginBottom: 10,
borderRadius: 5,
},
buttonContainer: {
gap: 10,
marginTop: 10,
},
});
Pour tester que tout fonctionne :
Lancez votre application Expo :
npx expo start
Testez l'inscription :
Testez la connexion :
Vérifiez l'utilisateur actuel :
Conseils supplémentaires :
databases.createDocument() pour sauvegarder des donnéesstorage.createFile() pour uploader des imagesC'est tout ! Vous avez maintenant Appwrite configuré dans votre application Expo React Native avec un système d'authentification fonctionnel.

Par coderoe · 5 min de lecture

Par coderoe · 5 min de lecture

Par coderoe · 5 min de lecture