FBSDKAccessToken dans mon AppDelegate ne marche pas

CusmarCusmar Membre
juillet 2015 modifié dans Objective-C, Swift, C, C++ #1

Bonjour,


 


J'ai intégré le kit FBSDKLoginKit à  mon projet et je souhaite vérifier si l'utilisateur n'est pas déjà  connecté sur Facebook avant de lui afficher le bouton de connexion. J'utilise une condition qui vérifie si FBSDKAccessToken.currentAccessToken() est vrai.


 


Mon but est d'identifier l'utilisateur au moyen des sessions proposées par Facebook même si il ferme l'application (la fait disparaà®tre).


 


Comme il est demandé dans la doc Facebook, j'ai remplacé le return true de mon fichier AppDelegate.swift par :


l



return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

l


Tout fonctionne sauf lorsque j'utilise cette condition au sein même de ma méthode didFinishLaunchingWithOptions dans mon AppDelegate :


l



if FBSDKAccessToken.currentAccessToken() == nil {
   println("user logged out")
   PFUser.logOut()
   FBSDKLoginManager().logOut()
}

l


A chaque fois, la réponse nil est renvoyée. Ce qui me paraà®t normal puisque AppDelegate n'a pas été initialisé et donc le return n'a pas encore été effectué pour identifier la session.


 


 


Comment est-ce que je peux faire pour que ça fonctionne et que ma session soit détectée ?


 


J'ai besoin de tester ce code dans mon AppDelegate car il est suivi de ceci qui permet de sélectionner quelle vue afficher à  l'ouverture de l'application :


l



// If user is logged
if PFUser.currentUser() != nil {
     initialViewController = storyboard.instantiateViewControllerWithIdentifier("FeedsViewController") as! UIViewController
}

l


Je suis ouvert à  toute proposition concernant le choix d'afficher la page de connexion ou la vue ici FeedsViewController en fonction de l'état de l'utilisateur.


 


J'ai fait ça en fouillant sur le net et ce n'est pas forcément la meilleure solution. J'ai déjà  essayé de lancer systématiquement la page de connexion puis d'effectuer le test de savoir si l'utilisateur est connecté ou non dessus puis, au moyen d'un segue, de passer à  ma vue FeedsViewController. Je n'ai pas aimé car c'est long à  charger et ce n'est pas fluide.


 


Comment faites-vous si ma solution d'utiliser storyboard.instantiateViewControllerWithIdentifier au coeur de mon AppDelegate n'est pas recommandée ? Ou comment puis-je faire fonctionner mon idée ?


Réponses

  • CéroceCéroce Membre, Modérateur
    Je ne connais pas le framework, mais je dirais que la méthode -[FBSDKApplicationDelegate application:didFinishLaunchingWithOptions:] doit être appelée avant tout chose, alors tu ne peux pas appeler FBSDKAccessToken.currentAccessToken() avant.

    Récupère le résultat de -[FBSDKApplicationDelegate application:didFinishLaunchingWithOptions:] dans une variable et renvoie-le dans le return.
  • Ca fonctionne bien au niveau de la connexion, mais maintenant le problème apparaà®t dans mes autres vues lorsque je teste FBSDKAccessToken.currentAccessToken(), il me retourne en permanence nil une fois que j'ai fermé puis réouvert l'application.


     


    Sinon est-ce que j'utilise une méthode viable ? Comme c'est la première fois et que je n'ai pas beaucoup d'expérience, je suis curieux de savoir si vous auriez fait comme ça ou non. :)

Connectez-vous ou Inscrivez-vous pour répondre.