2017-06-08 3 views
1

Je suis aux prises avec le problème de connexion Facebook, Connexion hier Facebook fonctionne correctement mais aujourd'hui, quand je cours mon application ça ne fonctionne pas, je ne sais pas pourquoi, pourquoi ça ne fonctionne pas soudainement déjà configuré tout choses liées à Facebook connexion dans Facebook développer la console tout est configuré S'il vous plaît aidez-moi si vous avez une idée, je permet déjà le partage de trousseau aussi. enter image description hereFacebook Connexion ne fonctionne pas dans IOS SDK

Code pour Facebook Connectez-vous

@IBAction func onClickFacebookLoginAction(_ sender: Any) { 

    var message = String() 
    if Reachability.isConnectedToNetwork() == true{ 

     let loginView:FBSDKLoginManager = FBSDKLoginManager() 
     loginView.loginBehavior = FBSDKLoginBehavior.web 
     loginView.logIn(withReadPermissions: ["email","public_profile","user_friends"], from: self, handler: { (result, error) in 
      if(error != nil){ 

       print("Error while try to login with facebook-\(error?.localizedDescription)") 
      }else if (result?.isCancelled)!{ 

       print("User cancel the facebook login") 
      }else{ 

       if result?.grantedPermissions != nil{ 
        if (result?.grantedPermissions .contains("email"))!{ 
         self.ShowProgressHUD() 
         self.fetchUserInfo() 
        }else{ 
         message = message.appending("Facebook email permission error") 
         self.showAlertMessage(message: message, title: "") 
        } 
       } 
      } 
     }) 
    } 
} 

func fetchUserInfo() -> Void { 

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

     let graphRequest:FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "/me", parameters:["fields": "id, first_name, last_name, name, email, picture"]) 
     graphRequest.start(completionHandler: { (connection, result, error) in 

      if(error != nil){ 

       self.showAlertMessage(message: (error?.localizedDescription)!, title: "") 

      } 
      else 
      { 
       print("Result is:\(result)") 
       self.dictionary = result as! [String : AnyObject] 
       let name = self.dictionary["name"] as!String 
       let email = self.dictionary["email"] as! String 
       let token = FBSDKAccessToken.current().tokenString 

       print("name is -\(name)") 
       print("email is -\(email)") 
       print("token is -\(token)") 


       DispatchQueue.main.async { 

        let SelectionViewObj = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController 
        self.navigationController?.pushViewController(SelectionViewObj, animated: true) 
       } 
      } 
     }) 
    } 
} 
+0

pourquoi il y a un '/' avant la valeur du paramètre graphPath 'graphPath: "/ me"' –

+0

@PraveenKumar je suivre quelques-uns tutoriel et tutoriel faisant même chose. –

+0

il suffit de supprimer le slash et l'essayer. vérifier ici pour les détails https://developers.facebook.com/docs/ios/graph et se référer à ce https://stackoverflow.com/questions/31383578/ios-facebooksdk-get-user-full-details –

Répondre

0

Voici comment je connecter avec Facebook,

@IBAction func act_loginFB(_ sender: UIButton) { 
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
    fbLoginManager.logIn(withReadPermissions: ["public_profile", "email",], from: self) { (result, error) -> Void in 
     if (error == nil){ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result! 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       self.getFBUserData() 
      } 
     } 
    } 
} 

func getFBUserData(){ 
    if((FBSDKAccessToken.current()) != nil){ 
     FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in 
      if (error == nil){ 
       //everything works print the user data 
       print(result) 
       let data: [String:AnyObject] = (result as? [String : AnyObject])! 
       print(data) 
       let email: String = data["email"]! as! String 
       print(email) 
      } 
     }) 
    } 
} 

Vérifiez que vous avez ajouté le correct FacebookAppID et FacebookDisplayName dans l'info. plist

+0

Je veux ouvrir le comportement de la connexion en tant que site web ne veux pas ouvrir dans le navigateur safari, Dans navigateur il fonctionne correctement dans mon code aussi –

+0

@Sanjeetverma ajouter ce 'fbLoginManager.loginBehavior = FBSDKLoginBehavior.web' après cette ligne' laissez fbLoginManager: FBSDKLoginManager = FBSDKLoginManager() ' –

+0

J'ai utilisé dans mon code aussi si vous voulez alors vous pouvez vérifier mon code ci-dessus dans ma question aussi Ok laissez-moi essayer votre réponse premier –

0

Ceci est le code que j'utilise pour auth séduire facebook.its fonctionnant comme un charme.Vérifier juste ou remplacer avec ceci.

self.fbLoginManager = FBSDKLoginManager.init() 
fbLoginManager.loginBehavior = FBSDKLoginBehavior.web 
self.fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in 
    if (error == nil) { 
     let fbloginresult : FBSDKLoginManagerLoginResult = result! 
     if fbloginresult.grantedPermissions != nil && fbloginresult.grantedPermissions.contains("email") { 
      if((FBSDKAccessToken.current()) != nil){ 
       FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id, first_name, last_name, email, gender, birthday, location"]).start(completionHandler: { (connection, result, error) -> Void in 
        if error != nil { 
         print(error?.localizedDescription ?? "error in facebook login...!") 
         return 
        } 
        if let dict = result as? NSDictionary { 
         print("facebook login result --->\n\(dict)") 
         guard let id = dict["id"] else { 
          print("Ooops... id = nil") 
          return 
         } 
         // let firstName: String = dict["first_name"] as? String ?? "" 
         // let lastName : String = dict["last_name"] as? String ?? "" 
         // let email : String = dict["email"] as? String ?? "" 

         self.fbLoginManager.logOut() 
        } 
       }) 
      } 
     } else { 
      print("facebook ---> login canceled") 
     } 
    } else { 
     print(error?.localizedDescription ?? "facebook login has error") 
    } 
} 
+0

Je reçois la même erreur quand j'essaie sur votre réponse –

+0

je pense retirer ce projet de la console développeur fb et créer un nouveau projet et essayer ceci .... –

+0

Mon application est en direct sur l'App Store et maintenant je suis en train d'ajouter quelques fonctionnalités Si je l'ai supprimé, puis peut-être Facebook login travail arrêté en direct aussi –