Ce didacticiel vous apprendra à utiliser le SDK iOS 6 et le cadre social pour charger du contenu dynamique à partir de Twitter. Pour ce faire, je vais vous apprendre à créer une application générant un profil Twitter. Continuer à lire!
Ouvrez Xcode et sélectionnez «Créer un nouveau projet Xcode». Sélectionnez «Application vide» et cliquez sur «Suivant». Entrez un nom pour votre projet (j'ai appelé le mien «Profil Twitter»), assurez-vous de sélectionner l'iPhone pour le périphérique, puis cochez toutes les cases à cocher, à l'exception de la case à cocher Utiliser les données de base. Après cela, cliquez sur «Suivant» et choisissez un emplacement pour enregistrer votre projet avant de cliquer sur «Créer»..
Nous souhaitons uniquement utiliser cette application en mode portrait. Pour ce faire, accédez à la section Orientations de l'interface prise en charge et désélectionnez les orientations Paysage..
Nous devrons ajouter trois cadres à notre projet: le cadre social pour effectuer la demande, le cadre de comptes pour utiliser le compte Twitter de l'utilisateur et le cadre de QuartzCore pour personnaliser un peu notre interface..
Allez dans l'onglet «Build Phases» et développez l'option «Link Binary With Libraries». Cliquez sur le bouton «+» pour ajouter un nouveau cadre. Tapez «Social» dans la boîte de recherche et sélectionnez le Social.framework option qui apparaît dans la liste. Cliquez sur «Ajouter» pour inclure ce cadre dans la phase de liaison de votre projet. Faites la même chose pour les frameworks Accounts et QuartzCore en tapant “Accounts” et “QuartzCore” dans le champ de recherche..
Allez dans «Fichier»> «Nouveau»> «Fichier…» ou appuyez sur N pour créer un nouveau fichier. Allez dans la section «Utiliser l'interface», sélectionnez «Storyboard», puis cliquez sur «Suivant». Assurez-vous que la famille de périphériques est définie sur iPhone et cliquez à nouveau sur «Suivant». Nommez votre storyboard. MainStoryboard et cliquez sur "Créer".
Nous devons maintenant associer le Storyboard à notre projet. Sélectionnez le nom du projet dans le menu du navigateur de Xcode et sélectionnez la cible actuelle (dans notre cas, «Profil Twitter»). Ensuite, sélectionnez l'onglet "Summery" et allez à la section "iPhone / iPad Deployment Info". Une fois là-bas, sélectionnez notre Storyboard appelé «MainStoryboard» pour le Storyboard principal..
La dernière chose que nous devons faire pour rendre notre travail de scénarimage change la application: didFinishLaunchWithOptions:
méthode, ouvrez AppDelegate.m et modifiez la méthode comme suit:
- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions return YES;
Ouvrez le storyboard et faites glisser un contrôleur de navigation de la bibliothèque d'objets vers la zone de dessin. Sélectionnez le contrôleur d'affichage de table connecté au contrôleur de navigation et supprimez-le. Maintenant, faites glisser un contrôleur de vue de la bibliothèque d'objets vers le canevas. Faites glisser CTRL du contrôleur de navigation vers le contrôleur de vue et sélectionnez "Contrôleur de vue racine" dans le menu contextuel. Sélectionnez le contrôleur de navigation, ouvrez l'inspecteur de fichier, puis désélectionnez «Utiliser autolayout», car nous n'utiliserons pas cette nouvelle fonctionnalité pour notre application. Enfin, double-cliquez sur la barre de navigation du contrôleur de vue que nous venons de créer et entrez «Nom d'utilisateur» comme titre..
Sélectionnez maintenant un champ de texte dans la bibliothèque d'objets et ajoutez-le au contrôleur de vue. Sélectionnez le champ de texte et ouvrez l'inspecteur d'attributs. Entrez «Nom d'utilisateur» comme espace réservé et assurez-vous de sélectionner l'option «Effacer au début de la modification». Ensuite, prenez un bouton dans la bibliothèque d'objets, ajoutez-le au contrôleur de vue et modifiez le titre en «Afficher les informations»..
Enfin, veillez à organiser le champ de texte et le bouton comme suit:
Nous avons également besoin d’un écran pour afficher le profil Twitter. Faites donc glisser un nouveau contrôleur de vue de la bibliothèque d’objets dans la zone de dessin. Faites glisser CTRL du bouton «Afficher les informations» vers le contrôleur de vue et sélectionnez «pousser» dans le menu contextuel. Ensuite, double-cliquez sur la barre de navigation du deuxième contrôleur de vue et entrez «Profil» comme titre..
Nous aurons besoin de beaucoup d’étiquettes et de quelques images sur cet écran pour afficher les informations du profil. Tout d'abord, ajoutez une vue d'image au contrôleur de vue de profil et assurez-vous de l'aligner en haut. Ensuite, ouvrez l'inspecteur de taille et attribuez-lui une taille de 320 x 160 pixels. Modifiez également le redimensionnement automatique comme suit:
Ajoutez une autre vue d'image par-dessus la précédente. Accédez à l'inspecteur de taille et modifiez la taille, les coordonnées et le redimensionnement automatique comme suit:
Maintenant, nous allons ajouter des étiquettes pour montrer le nom et le nom d'utilisateur. Faites glisser une étiquette au-dessus de la plus grande vue d'image pour la bannière. Ouvrez l'inspecteur de taille et modifiez la taille, les coordonnées et le redimensionnement automatique comme suit:
Ouvrez ensuite l’Inspecteur des attributs et entrez «Nom» pour le texte de l’étiquette. Changez la couleur en blanc, mettez la police en gras et définissez l'alignement au centre. Nous allons enfin ajouter une ombre à cette étiquette. Définissez le décalage de l’ombre verticale sur 1 pour que l’ombre apparaisse sous le texte. Cliquez sur Couleur de l'ombre et faites la couleur noire avec une opacité de 75%.
Cette étiquette portait le nom, mais nous avons également besoin d'une étiquette pour le nom d'utilisateur. Sélectionnez donc l'étiquette que vous venez de créer et appuyez sur ⌘C V pour la copier et la coller. Remplacez le texte par «@nom_utilisateur», puis les coordonnées X et Y sur 20 et 120. Nous souhaitons également réduire la taille de la police. Ouvrez donc l’Inspecteur des attributs et définissez la taille de la police sur 14..
Nous avons également besoin de six étiquettes supplémentaires pour indiquer le nombre de tweets, de suiveurs et de personnes qui suivent. Heureusement pour nous, il suffit d’en ajouter deux et de copier et coller les quatre autres. Ajoutez une nouvelle étiquette au contrôleur de vue, faites une largeur de 74 pixels, modifiez les coordonnées X et Y en 20 et 168. Entrez «0» comme texte pour cette étiquette. Ensuite, ajoutez une nouvelle étiquette et faites-en aussi une largeur de 74 pixels, mais modifiez cette fois les coordonnées X et Y en 20 et 190. Ouvrez l'inspecteur d'attributs et attribuez à l'étiquette une couleur gris clair. Changez également le texte en «Tweets».
Sélectionnez les deux étiquettes que nous venons de créer et faites-les glisser ALT vers le centre. De cette façon, nous créons une copie des deux étiquettes. Faites glisser ALT à nouveau, mais cette fois, alignez les étiquettes à droite. Maintenant, nous avons créé ces six labels assez rapidement. Changez le texte de l'étiquette centrale en "Suivante" et le texte de la bonne étiquette en "Suiveurs".
La dernière chose à ajouter à notre interface est une vue texte pour afficher le dernier tweet d'un utilisateur. Faites donc glisser une vue texte de la bibliothèque d'objets vers le bas du contrôleur de vues. Ouvrez l'inspecteur de taille et modifiez la taille, les coordonnées et le redimensionnement automatique comme suit:
Avec ces options, notre application aura fière allure sur un iPhone 5, mais également sur un iPhone 4 plus ancien. Vous pouvez prévisualiser le Storyboard dans un écran de 3,5 pouces en appuyant sur ce bouton en bas à droite:
Ouvrez maintenant l’Inspecteur des attributs et supprimez le texte de la vue Texte. Assurez-vous également de désélectionner l'option Modifiable..
L'interface devrait maintenant ressembler à ceci:
Maintenant que nous avons terminé notre interface, je pense que le moment est venu de tester notre application. Cliquez sur Construire et exécuter ou appuyez sur ⌘R pour tester l'application. L'application devrait afficher un contrôleur de navigation simple avec un champ de texte et un bouton. Si vous appuyez sur le bouton, vous devriez voir la page de profil que nous venons de créer. Le nom et le nom d'utilisateur ne sont pas faciles à lire, mais nous nous en occuperons plus tard..
Allez dans «Fichier»> «Nouveau»> «Fichier…» pour créer un nouveau fichier. Sélectionnez «Classe Objective-C» et cliquez sur «Suivant». Entrez «UsernameViewController» pour la classe et assurez-vous qu'il s'agit d'une sous-classe d'UIViewController et que les deux cases à cocher ne sont pas cochées. Cliquez à nouveau sur «Suivant» puis sur «Créer»..
Ouvrez UsernameViewController.h et modifiez le code pour qu'il se lise comme suit:
#importation@interface UsernameViewController: UIViewController IBOutlet UITextField * usernameTextfield; @fin
Ici, nous venons de créer un simple point de vente pour notre champ de texte, que nous utiliserons pour transmettre le nom d'utilisateur saisi à la page de profil..
Ensuite, ouvrez à nouveau le Storyboard et sélectionnez le nom d'utilisateur View Controler. Ouvrez l'inspecteur d'identité et remplacez la classe par le nom UsernameViewController que nous venons de créer. Après cela, ouvrez l'inspecteur de connexions et connectez la sortie usernameTextfield avec le champ de texte.
Maintenant, ouvrez UsernameViewController.m et ajoutez la ligne suivante sous #import "UsernameViewController.h"
:
#import "ProfileViewController.h"
Ici, nous importons déjà ProfileViewController, que nous créerons plus tard dans ce tutoriel. Ensuite, ajoutez la méthode suivante sous le didReceiveMemoryWarning
méthode:
- (void) prepareForSegue: (UIStoryboardSegue *) expéditeur de séquence: expéditeur (id) ProfileViewController * profileViewController = [segue destinationViewController]; [profileViewController setUsername: usernameTextfield.text];
Ici, nous passons le nom d'utilisateur à ProfileViewController, que nous allons créer dans une minute..
Pour créer ces points de vente, nous devons d’abord créer de nouveaux fichiers. Allez dans «Fichier»> «Nouveau»> «Fichier…». Sélectionnez «Classe Objective-C» et cliquez sur «Suivant». Entrez «ProfileViewController» pour la classe et assurez-vous qu'il s'agit d'une sous-classe d'UIViewController et que les deux cases à cocher ne sont pas cochées. Cliquez à nouveau sur «Suivant» puis sur «Créer»..
Ouvrez ProfileViewController.h et modifiez le code pour qu'il se lise comme suit:
#importation#importation #importation #importation @interface ProfileViewController: UIViewController IBOutlet UIImageView * profileImageView; IBOutlet UIImageView * bannerImageView; IBOutlet UILabel * nameLabel; IBOutlet UILabel * nomutilisateurLabel; IBOutlet UILabel * tweetsLabel; IBOutlet UILabel * followingLabel; IBOutlet UILabel * followersLabel; IBOutlet UITextView * lastTweetTextView; NSString * nom d'utilisateur; @property (nonatomic, keep) NSString * nom d'utilisateur; @fin
Ici, nous importons d’abord les frameworks que nous avons ajoutés précédemment à notre projet. Après cela, nous créons des points de vente pour les éléments qui afficheront l’image de profil, puis une chaîne contenant le nom d’utilisateur saisi. Nous mettons cette chaîne dans le prepareForSegue: expéditeur:
méthode, nous avons créé à l'étape précédente.
Ouvrez le Storyboard et sélectionnez le profil View Controller. Ouvrez l'inspecteur d'identité et remplacez la classe par ProfileViewController. Après cela, ouvrez l'inspecteur de connexions et connectez les prises avec les éléments d'interface correspondants. Assurez-vous simplement de connecter les sorties tweetsLabel, followingLabel et followersLabel aux étiquettes situées au-dessus des étiquettes avec le texte correspondant. Donc, ne connectez pas la sortie tweetsLabel avec l’étiquette «Tweets», mais avec l’étiquette située au-dessus de celle-ci..
Enfin, ouvrez ProfileViewController.m et ajoutez la ligne suivante sous @implementation:
@synthesize nom d'utilisateur;
Le fichier ProfileViewController.m doit toujours être ouvert. Allez à la viewDidLoad
méthode et la modifier comme suit:
- (void) viewDidLoad [super viewDidLoad]; [profileImageView.layer setBorderWidth: 4.0f]; [profileImageView.layer setBorderColor: [[UIColor whiteColor] CGColor]]; [profileImageView.layer setShadowRadius: 3.0]; [profileImageView.layer setShadowOpacity: 0.5]; [profileImageView.layer setShadowOffset: CGSizeMake (1.0, 0.0)]; [profileImageView.layer setShadowColor: [[UIColor blackColor] CGColor]];
Ici, nous utilisons le framework QuartzCore pour donner à profileImageView une bordure et une ombre.
Ajoutez la méthode suivante sous le didReceiveMemoryWarning
méthode:
- (void) getInfo // Demander l'accès aux comptes Twitter ACAccountStore * accountStore = [[ACAccountStore alloc]] init]; ACAccountType * accountType = [accountStore accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierTwitter]; [accountStore requestAccessToAccountsWithType: options accountType: nil achèvement: ^ (BOOL accordé, erreur NSError *) if (accordé) NSArray * accounts = [accountStore accountsWithAccountType: accountType]; // Vérifier si les utilisateurs ont configuré au moins un compte Twitter si (comptes.count> 0) ACAccount * twitterAccount = [accounts objectAtIndex: 0]; // Création d'une demande pour obtenir les informations sur un utilisateur sur Twitter SLRequest * twitterInfoRequest = [SLRequest requestForServiceType: SLServiceTypeTwitter requestMethod: SLRequestMethodGET URL: [NSURL URLWithString: @ "https://api.twitter.com/1.1/users/show. json "] paramètres: [NSDictionary dictionaryWithObject: nom d'utilisateur pourKey: @" nom_écran "]]; [twitterInfoRequest setAccount: twitterAccount]; // Création de la demande [twitterInfoRequest performRequestWithHandler: ^ (NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * error) dispatch_async (dispatch_get_main_queue (), ^ // Vérifie si nous avons atteint la limite de création si ([urlResponse statusCode] ===). ) NSLog (@ "Limite de débit atteinte"); return; // Vérifiez s'il y a eu une erreur if (error) NSLog (@ "Erreur:% @", error.localizedDescription); return; // Vérifiez si il existe des données de réponse si (responseData) NSError * erreur = nil; NSArray * TWData = [NSJSONSerialization JSONObjectWithData: options responseData: NSJSONReadingMutableLeaves erreur: & error]; // Filtrez les données préférées NSString * screen_name = [(NSDictionary *) TWData objectForKey : @ "nom_écran"]; NSString * nom = [(NSDictionary *) TWData objectForKey: @ "nom"]; int followers = [[(NSDictionary *) TWData objectForKey: @ "nombre_adhérents"] integerValue]; int suivants = [[ (NSDictionary *) TWData objectForKey: @ "friends_count"] integerValue]; int tweets = [[(NSDictionary *) TWData obje ctForKey: @ "statuses_count"] integerValue]; NSString * profileImageStringURL = [(NSDictionary *) TWData objectForKey: @ "profile_image_url_https"]; NSString * bannerImageStringURL = [(NSDictionary *) TWData objectForKey: @ "profile_banner_url"]; // Met à jour l'interface avec les données chargées nameLabel.text = name; usernameLabel.text = [NSString stringWithFormat: @ "@% @", nom_écran]; tweetsLabel.text = [NSString stringWithFormat: @ "% i", tweets]; followingLabel.text = [NSString stringWithFormat: @ "% i", suivant]; followersLabel.text = [NSString stringWithFormat: @ "% i", followers]; NSString * lastTweet = [[(NSDictionary *) TWData objectForKey: @ "status"] objectForKey: @ "text"]; lastTweetTextView.text = lastTweet; // Récupère l'image de profil dans la résolution d'origine. ProfileImageStringURL = [profileImageStringURL stringByReplacingOccurrencesOfString: @ "_ normal" withString: @ ""]; [self getProfileImageForURLString: profileImageStringURL]; // Récupère l'image de bannière si l'utilisateur en a un si (bannerImageStringURL) NSString * bannerURLString = [NSString chaîneWithFormat: @ "% @ / mobile_retina", bannerImageStringURL]; [self getBannerImageForURLString: bannerURLString]; else bannerImageView.backgroundColor = [UIColor underPageBackgroundColor]; ); ]; else NSLog (@ "Aucun accès accordé"); ];
C'est beaucoup de code, mais je vais l'expliquer étape par étape..
ACAccountStore * accountStore = [[ACAccountStore alloc] init]; ACAccountType * accountType = [accountStore accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierTwitter];
Ici, nous initialisons d'abord un objet ACAccountStore qui nous permettra d'accéder aux comptes de l'utilisateur. Après cela, nous créons une instance ACAccountType, appelez le accountTypeWithAccountTypeIdentifier
méthode sur l'instance ACAccountStore que nous venons de créer, puis définissez le type de compte sur Twitter. Vous pouvez utiliser la même méthode si vous souhaitez utiliser Facebook, mais vous devrez ensuite définir l'identifiant du type de compte sur ACAccountTypeIdentifierFacebook
.
[accountStore requestAccessToAccountsWithType: options accountType: nil achèvement: ^ (BOOL accordé, erreur NSError *) if (accordé) ];
Ici, nous demandons simplement à l'utilisateur de donner à notre application l'accès à son (ses) compte (s) Twitter.
NSArray * accounts = [accountStore accountsWithAccountType: accountType]; if (accounts.count> 0) ACAccount * twitterAccount = [accounts objectAtIndex: 0];
Ici, nous créons un tableau de tous les comptes Twitter de l'utilisateur. Nous vérifions si l'utilisateur a des comptes Twitter. Si tel est le cas, nous créons une instance ACAccount du premier compte Twitter de ce groupe. Pour simplifier les choses, nous utilisons le premier compte de ce didacticiel, mais dans une application réelle, vous devez donner à l'utilisateur la possibilité de sélectionner son compte Twitter préféré s'il dispose de plus de 1.
SLRequest * twitterInfoRequest = [SLRequest requestForServiceType: SLServiceTypeTwitter requestMethod: SLRequestMethodGET URL: [NSURL URLWithString:]. Nom de l'écran"]]; [twitterInfoRequest setAccount: twitterAccount];
Ici, nous créons notre demande, qui appellera l'API Twitter. Nous avons défini le type de service sur Twitter et la méthode de requête sur GET. Nous ne pourrons pas obtenir d'informations sur un utilisateur sur Twitter. Vous pouvez également utiliser les méthodes de requête POST et DELETE. Avec POST, vous pouvez mettre à jour une image de profil ou publier un tweet. Avec SUPPRIMER, vous pouvez supprimer des éléments de votre compte. L'URL de ce tutoriel sera: https://api.twitter.com/1.1/users/show.json. Cette URL garantira que la demande renvoie diverses informations sur l'utilisateur spécifié au format JSON. En tant que paramètre, nous ajoutons le nom d'utilisateur entré pour la clé nom_écran afin d'obtenir les informations sur cet utilisateur. Après cela, nous définissons le compte de la demande sur l'instance ACAccount..
[twitterInfoRequest performRequestWithHandler: ^ (NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * erreur) dispatch_async (dispatch_get_main_queue (), ^ if ([urlResponse statusCode]) == 429) NSLog (limite de temps) if (error) NSLog (@ "Erreur:% @", error.localizedDescription); return;); ];
Ici, nous faisons réellement la demande et nous nous assurons qu’elle se charge de manière asynchrone afin que notre interface continue à répondre au chargement. Nous le faisons avec GCD, Grand Central Dispatch. Je n'entrerai pas dans les détails, mais vous pouvez trouver plus d'informations à ce sujet ici. Lorsque la demande est terminée, nous vérifions d'abord si notre application n'a pas atteint la limite de taux. Après cela, nous vérifions s'il y a une erreur.
if (responseData) NSError * error = nil; NSArray * TWData = [NSJSONSerialization JSONObjectWithData: responseData options: erreur NSJSONReadingMutableLeaves: & error];
Ici, nous vérifions si la requête a retourné des données de réponse. Si tel est le cas, nous créons un tableau à partir du fichier JSON renvoyé..
NSString * nom_écran = [(NSDictionary *) TWData objectForKey: @ "nom_écran"]; NSString * name = [(NSDictionary *) TWData objectForKey: @ "name"]; int followers = [[(NSDictionary *) TWData objectForKey: @ "followers_count"] integerValue]; int suivant = [[(NSDictionary *) TWData objectForKey: @ "friends_count"] integerValue]; int tweets = [[(NSDictionary *) TWData objectForKey: @ "statuses_count"] integerValue]; NSString * profileImageStringURL = [(NSDictionary *) TWData objectForKey: @ "profile_image_url_https"]; NSString * bannerImageStringURL = [(NSDictionary *) TWData objectForKey: @ "profile_banner_url"];
Ici nous filtrons les données préférées, nous obtenons le nom de l'utilisateur, nom_écran (nom d'utilisateur), le nombre de tweets, les abonnés et les personnes qui suivent. Nous obtenons également les URL de l'image de profil et de la bannière..
nameLabel.text = name; usernameLabel.text = [NSString stringWithFormat: @ "@% @", nom_écran]; tweetsLabel.text = [NSString stringWithFormat: @ "% i", tweets]; followingLabel.text = [NSString stringWithFormat: @ "% i", suivant]; followersLabel.text = [NSString stringWithFormat: @ "% i", followers]; NSString * lastTweet = [[(NSDictionary *) TWData objectForKey: @ "status"] objectForKey: @ "text"]; lastTweetTextView.text = lastTweet;
Ici, nous mettons simplement à jour les propriétés de texte de nos étiquettes et textview avec les données que nous venons de recevoir et filtrer.
profileImageStringURL = [profileImageStringURL stringByReplacingOcurrencesOfString: @ "_ normal" withString: @ ""]; [self getProfileImageForURLString: profileImageStringURL];
Étant donné que Twitter utilise l’URL de l’image de profil de taille normale (48 x 48 pixels), nous supprimons la chaîne «_normal» afin d’obtenir l’image de profil originale. Après cela, nous appelons le getProfileImageForURLString:
méthode pour télécharger l’image de profil. Nous allons créer cette méthode dans quelques minutes.
if (bannerImageStringURL) NSString * bannerURLString = [NSString chaîneWithFormat: @ "% @ / mobile_retina", bannerImageStringURL]; [self getBannerImageForURLString: bannerURLString]; else bannerImageView.backgroundColor = [UIColor underPageBackgroundColor];
Ici, nous vérifions si l'utilisateur a une bannière de profil. Si tel est le cas, nous mettons à jour l'URL afin d'obtenir la version mobile de la bannière Retina, dont la taille est de 640x320 pixels. Après cela, nous appelons le getBannerImageForURLString:
méthode pour télécharger la bannière. Si l'utilisateur n'a pas de bannière de profil, nous donnons à bannerImageView une couleur d'arrière-plan..
Maintenant, ajoutez les méthodes suivantes sous le getInfo
méthode pour télécharger le profil et l'image de la bannière:
- (void) getProfileImageForURLString: (NSString *) urlString; NSURL * url = [NSURL URLWithString: urlString]; NSData * data = [NSData dataWithContentsOfURL: url]; profileImageView.image = [UIImage imageWithData: data]; - (void) getBannerImageForURLString: (NSString *) urlString; NSURL * url = [NSURL URLWithString: urlString]; NSData * data = [NSData dataWithContentsOfURL: url]; bannerImageView.image = [UIImage imageWithData: data];
La dernière chose à faire pour terminer notre application est d'appeler le getInfo
méthode dans le viewDidLoad
méthode, alors allez à la viewDidLoad
method et ajoutez la ligne suivante au bas de cette méthode:
[self getInfo];
Maintenant que nous avons terminé notre application, cliquez sur Créer et exécuter ou appuyez sur ⌘R pour tester l'application. Si vous entrez un nom d'utilisateur provenant d'une personne sur Twitter, vous devriez voir un mini profil contenant des informations sur cet utilisateur..
Merci d'avoir lu ce tutoriel sur la création d'une requête Twitter avec le nouveau cadre social. Si vous souhaitez en savoir plus sur l'API Twitter, je vous suggère de consulter le documentaion officiel. J'espère que vous avez aimé ce tutoriel, et si vous avez des questions ou des commentaires sur ce tutoriel, laissez-les dans la section commentaires ci-dessous!