/ / Swift FBSDK Obtenir le pays de l'utilisateur - swift, facebook-graph-api, swift3, fbsdk, fbsdkloginkit

FBSDK rapide Obtenir le pays de l'utilisateur - swift, facebook-graph-api, swift3, fbsdk, fbsdkloginkit

J'implémente actuellement la connexion à Facebook pour mon application et j'essaie d'extraire les informations suivantes du profil:

Prénom, nom de famille, le sexe, et pays.

Cependant, je ne peux que sembler aller chercher tout sauf le pays utilisateur. J'ai essayé de définir mes paramètres à mon FBSDKGraphRequest comme ceci:

let parameters = ["fields": "email, gender, user_location, id, first_name, last_name,  picture.type(large)"]

ainsi que mes readPermissions to:

loginButton.readPermissions = ["public_profile", "email", "user_location", "user_friends", "user_education_history", "user_birthday"]

Qu'est-ce que je fais mal ici? Comment puis-je obtenir le pays de l'utilisateur?

L'aide est grandement appréciée!

Réponses:

3 pour la réponse № 1

Votre lecturePermissions user_location est correct mais le nom du paramètre pour le pays / emplacement n'est pas user_location.
C'est location.

let parameters = ["fields": "id,location,name,first_name,last_name,picture.type(large),email,birthday,gender,bio,relationship_status"]

Assurez-vous d'avoir ajouté un endroit dans votre compte Facebook et fait que Publique dans lequel vous vous connectez et vous aurez terminé. Essayez avec le même compte facebook à partir duquel vous avez créé l'application facebook.

Vous pouvez obtenir votre position avec un avertissementmessage (comme illustré ci-dessous capture d'écran ci-dessous) à des fins de test. Mais avant de soumettre votre application à l’appstore, vous devez passer par la vérification de la connexion depuis Facebook en tant que user_location n'est pas une autorisation pré-approuvée.

Pour plus de détails, allez à Graph API Explorer

Tu peux aller au Explorateur de l'API graphique et essayez avec votre application. Générez un jeton en cliquant sur Obtenir un jeton et Obtenir un jeton d'accès utilisateur. En cliquant dessus, les cases d'autorisation seront ouvertes. Garder emplacement_utilisateur vérifié.

Graphique Api Explorer

entrer la description de l'image ici

Ensuite, il suffit de cliquer sur Soumettre avec ce qui suit Obtenir Paramètres. Assurez-vous que le emplacement paramètre est là et vous pouvez voir un JSON comme celui-ci, comme indiqué.
Il y a un emplacement dictionnaire avec prénom clé composée du nom de votre pays et de votre ville.

{
"id": "338058996547981",
"name": "Rajan Maheshwari",
"birthday": "04/29/1990",
"location": {
"id": "106517799384578",
"name": "New Delhi, India"
}
}

entrer la description de l'image ici

REMARQUE: - Vous devez également vous assurer que vous avez entré un emplacement dans votre profil Facebook et que vous l'avez rendu public.

entrer la description de l'image ici

Lorsque vous exécuterez l'application avec les autorisations, vous obtiendrez une authentification Facebook avec un écran d'avertissement comme celui-ci.

entrer la description de l'image ici

Il va demander un Login Review comme certaines des autorisations ont besoin de révision ici. Les autorisations de base fournies gratuitement par Facebook qui n’ont besoin d’aucun examen sont les suivantes: -

entrer la description de l'image ici

mais à des fins de test, vous pouvez obtenir l'emplacementsans aucun examen. Mais avant de soumettre l'application iOS à l'Appstore, vous devez passer la vérification de connexion de Facebook afin d'éviter ce message d'avertissement et de rechercher l'emplacement de l'utilisateur.


0 pour la réponse № 2

Si vous avez besoin du pays séparément, vous pouvez toujours utiliser location {location}

    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "location{location}"]).start(completionHandler: { (connection, result, error) -> Void in
if let error = error {
self.alertTheUser(title: "Error", message: error.localizedDescription)
print(error)
}else{
let fbDetails = result as! NSDictionary
let location : NSDictionary! = fbDetails.value(forKey: "location") as! NSDictionary
let locationContents : NSDictionary! = location.value(forKey: "location") as! NSDictionary
self.registerCityField.text = locationContents.value(forKey: "city") as? String
self.registerStateField.text = locationContents.value(forKey: "state") as? String
self.registerCountryField.text = locationContents.value(forKey: "country") as? String
}
})