2017-10-19 23 views
1

J'ai travaillé sur l'obtention d'informations de profil utilisateur par swift. Il n'y a pas de bugs mais je voudrais vérifier si ce code fonctionne ou non à cause du bug ci-dessous, je n'ai pas pu vérifier dans le simulateur.Comment obtenir le profil d'utilisateur Facebook (swift)

Bug: repassent à stocker le jeton d'accès en raison de NSUserDefaults simulateur bug

Comme je sais, ce bug ne sera pas se produire au niveau du dispositif réel.

class FetchUserProfileController: UIViewController { 


@IBOutlet weak var userFullName: UILabel! 
@IBOutlet weak var userProfileImage: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    userFullName.text = "" 

    if let _ = FBSDKAccessToken.current() 
    { 
     fetchUserProfile() 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 


func fetchUserProfile() 
{ 
    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id, email, name, picture.width(200).height(200)"]) 

    graphRequest.start(completionHandler: { (connection, result, error) -> Void in 

     if ((error) != nil) 
     { 
      print("Error took place: \(error)") 
     } 
     else 
     { 
      print("Print entire fetched result: \(result)") 

      let fbData:[String:AnyObject] = result as! [String : AnyObject] 

      let userName : NSString? = fbData["name"]! as? NSString 
      let facebookID : NSString? = fbData["id"]! as? NSString 

      if let imageURL = ((fbData["picture"] as? [String: Any])?["data"] as? [String: Any])?["url"] as? String { 
       //Download image from imageURL 
      } 

     } 
    }) 
} 

}

Répondre

0

Votre code devrait fonctionner sur un appareil normal. Facebook Login SDK empêche le simulateur iOS de mettre en cache le jeton d'accès. Si vous n'avez pas de périphérique réel et que vous devez vérifier la connexion sur un simulateur, procédez comme suit:

1) Recherchez FBSDKKeychainStore.m: dans votre projet.

2) Aller à la ligne 94 et ajoutez key = [NSString stringWithFormat:@"%@_fix", key]; juste avant [[NSUserDefaults standardUserDefaults] setObject:value forKey:key];

3) Aller à la ligne 135 et ajouter la même chose, key = [NSString stringWithFormat:@"%@_fix", key]; juste avant [[NSUserDefaults standardUserDefaults] setObject:value forKey:key];

Il imprimera la ligne de bug que vous avez mentionné, mais vous pourrez vous connecter à facebook en utilisant un simulateur