2017-06-02 4 views
1

J'utilise le SDK Facebook pour me connecter et progresser dans mon application. Lorsqu'un utilisateur supprime les autorisations de l'application de sa page Facebook, puis rouvre l'application, je souhaite qu'il soit envoyé au tout premier contrôleur de vue, qui demande à l'utilisateur de se connecter à Facebook. Cependant, je rencontre le problème où l'utilisateur peut toujours accéder à l'application même après avoir supprimé les autorisations.Swift: Le jeton d'accès Facebook est toujours renvoyé même après avoir supprimé l'application des paramètres Facebook

Alors, comment cela devrait fonctionner:

i) L'utilisateur va au profil Facebook et supprime les autorisations d'application de paramètres

ii) l'utilisateur se ferme complètement sur mon application de l'iPhone. Iii) L'utilisateur ouvre à nouveau mon application et le contrôleur de vue "Connexion à Facebook" doit apparaître.

Au lieu de cela, ce qui se passe:

i) L'utilisateur va au profil Facebook et supprime les autorisations d'application de paramètres

ii) l'utilisateur se ferme complètement sur mon application de l'iPhone.

iii) l'utilisateur ouvre à nouveau mon application et mon application ouvre dans un contrôleur de vue différent qui ne devrait venir après que l'utilisateur a ouvert une session.

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    // Override point for customization after application launch. 
    GMSServices.provideAPIKey("MY_API_KEY") 
    GMSPlacesClient.provideAPIKey("MY_API_KEY") 

    // FACEBOOK API STUFF 

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
    print(FBSDKAccessToken.current()) 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    self.window = UIWindow(frame: UIScreen.main.bounds) 

    if(FBSDKAccessToken.current() != nil){ 

     print(FBSDKAccessToken.current()) 

     let initialViewController = storyboard.instantiateViewController(withIdentifier: "main") 

     self.window?.rootViewController = initialViewController 
     self.window?.makeKeyAndVisible() 
    } 
    else{ 

     print(FBSDKAccessToken.current()) 
     let initialViewController = storyboard.instantiateViewController(withIdentifier: "facebookLogin") 

     self.window?.rootViewController = initialViewController 
     self.window?.makeKeyAndVisible() 
    } 
    return true 
} 
+0

app supprimer de l'appareil puis vérifiez à nouveau. – KKRocks

+0

essayé, cela fonctionne, mais alors quand je retourne à mon compte Facebook et supprime l'application à partir de là, j'ai toujours le même problème – notSoExperiencedCoder

+0

oui ce n'est pas un problème mais vous devez vous déconnecter de votre session facebook – KKRocks

Répondre

1

Vous devez dconnecter votre session manuellement

FBSDKLoginManager().logOut() 

OU

FBSDKAccessToken.current = nil 
FBSDKProfile.current = nil 
0

Une solution est de rafraîchir jeton chaque fois que votre utilisateur de commencer à utiliser l'application lorsque vous supprimez votre application de « connecté avec Facebook », vous recevrez une erreur « L'opération n'a pas pu être terminée. (Erreur de com.facebook.sdk.core 10.) » afin que vous puissiez ensuite vous déconnecter et faire de votre signe utilisateur une nouvelle fois

FBSDKAccessToken.refreshCurrentAccessToken { (_, _, error) in 
      if error != nil { 
       print(error!.localizedDescription) 
       try! Auth.auth().signOut() 
      } 
     }