0
votes

Conversion d'API graphique de Swift 3 à Swift 5 pour Facebook SDK

Je développe une application qui permet à l'utilisateur de se connecter à l'aide de Facebook. L'extrait de code que j'ai utilise Swift 3 et je ne trouve pas de convertisseur en ligne. Le code SWIFT 3 est le suivant:

Dans l'exemple qui est dans Swift 3, Xcode suggère: xxx

et le programmateur passe alors (c'est toute la fonction) : xxx

lorsque je commence à taper: xxx

qui me donne cette ligne de code: < PRE> XXX

Comment puis-je convertir cela de Swift 3 en Swift 5?

Mise à jour après commentaire

My "HoméafterLoginViewController.Shift" est comme suit: xxx

et ce code fonctionne mais il y a une autre étape que j'ai besoin - expliquée dans la capture d'écran:

 Entrez la description de l'image ici


0 commentaires

3 Réponses :


1
votes
GraphRequest(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
                    if let userInfo = result as? [String: Any] {
                        if let email = userInfo["email"] as? String {
                            let firstName = userInfo["first_name"] as? String
                            let lastName = userInfo["last_name"] as? String
                            var profilePicUrl: String? = nil
                            if let fbUserId = userInfo["id"] as? String {
                                profilePicUrl = "http://graph.facebook.com/\(fbUserId)/picture?type=large"
                            }
                            //Do your operations here.
                        }
                    }
                }
            })
Hope that will help!

2 commentaires

Comment afficherai-je l'image de l'utilisateur avec cette fonction


@Rosscurrie s'il vous plaît vérifier ma réponse. J'ai mis à jour le code là-bas pour obtenir une photo de profil.



3
votes
        func getFacebookProfileInfo() {
        let requestMe = GraphRequest.init(graphPath: "me", parameters: ["fields" : "id,name,email,picture.type(large)"])
        let connection = GraphRequestConnection()
        connection.add(requestMe, completionHandler: { (connectn, userresult, error) in
            if let dictData: [String : Any] = userresult as? [String : Any] {
                DispatchQueue.main.async {
                    if let pictureData: [String : Any] = dictData["picture"] as? [String : Any] {
                        if let data : [String: Any] = pictureData["data"] as? [String: Any] {

                            print(data)
                            print(dictData["email"]!)

                        }
                    }
                }
            }
        })
        connection.start()
    }

3 commentaires

Je reçois cette erreur: Utilisation d'un identifiant non résolu 'Self'


Cela affichera-t-il l'image de l'utilisateur sur le HomafterLoginViewController.storyboard?


J'ai eu le code de travail! Je n'appelais pas la fonction, stupide moi! J'ai une autre question, voir la capture d'écran ajoutée à la question! Et merci beaucoup pour votre aide!



1
votes

Essayez le code ci-dessous pour obtenir les informations de l'utilisateur.

let params = ["fields":"email, id, name, first_name, last_name,gender"]//, user_gender, user_birthday"]

let request = GraphRequest(graphPath: "me", parameters: params, accessToken: AccessToken.current, httpMethod: .GET, apiVersion: FacebookCore.GraphAPIVersion.defaultVersion)
        request.start { (response, result) in
            switch result {
            case .success(let value):
                print(value.dictionaryValue!)
                var parsedData = value.dictionaryValue as Dictionary<String, AnyObject>?

                if let firstName = parsedData?["first_name"] {
                    print("First Name: \(firstName)")
                }

                if let lastName = parsedData?["last_name"] {
                    print("Last Name: \(lastName)")
                }

                if let email = parsedData?["email"] {
                    print("Email: \(email as! String)")
                }

                if let id = parsedData?["id"] {
                    let faceBookId = id as! String
                    print("Facebook Id: \(faceBookId)")

                    //you can get profile picture URL here.
                    let pictureURL = "https://graph.facebook.com/" + "\(faceBookId)/" + "picture?type=large&return_ssl_resources=1"
                    print("Profile Picture URL: \(pictureURL)")
                }

            case .failed(let error):
                print(error.localizedDescription)
            }
}


1 commentaires

Salut @hadiks, j'ai rencontré quelques erreurs! J'ai mis à jour mon code pour vous montrer, consultez la section intitulée "--- Après le code de commentaire ---"