/ / Swift FBSDK Pobierz kraj użytkownika - swift, facebook-graph-api, swift3, fbsdk, fbsdkloginkit

Swift FBSDK Uzyskaj kraj użytkownika - swift, facebook-graph-api, swift3, fbsdk, fbsdkloginkit

Obecnie wdrażam logowanie Facebooka do mojej aplikacji i próbuję pobrać następujące informacje z profilu:

Imię, nazwisko, płeć, i kraju.

Jednak wydaje mi się, że pobieram tylko wszystko oprócz kraju użytkownika. Próbowałem ustawić moje parametry w moim FBSDKGraphRequest w następujący sposób:

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

a także moje uprawnienia do odczytu:

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

Co ja tu robię źle? Jak mogę sprawdzić kraj użytkownika?

Pomoc jest bardzo cenna!

Odpowiedzi:

3 dla odpowiedzi № 1

Twoje uprawnienia do odczytu user_location jest poprawna, ale nazwa parametru dla kraju / lokalizacji nie jest user_location.
To jest location.

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

Upewnij się, że dodałeś plik miejsce na swoim koncie na Facebooku i to zrobiłem publiczny w którym się logujesz i skończysz. Spróbuj z tym samym kontem na Facebooku, z którego utworzyłeś aplikację Facebook.

Możesz uzyskać swoją lokalizację z ostrzeżeniemwiadomość (jak pokazano poniżej na zrzucie ekranu) do celów testowych. Ale przed przesłaniem aplikacji do Appstore musisz przejść przez przegląd logowania z Facebooka jako user_location nie jest wstępnie zatwierdzonym pozwoleniem.

Aby uzyskać więcej informacji, przejdź do Eksploratora interfejsu API programu Graph

Możesz iść do Graph API Explorer i wypróbuj swoją aplikację. Wygeneruj token, klikając Zdobądź token i Uzyskaj token dostępu użytkownika. Po kliknięciu otworzy się pola wyboru uprawnień. Trzymać lokalizacja_użytkownika sprawdzone.

Strona Graph Api Explorer

wprowadź opis obrazu tutaj

Następnie kliknij Prześlij, używając następujących poleceń Dostać Parametry. Upewnij się, że Lokalizacja parametr jest tam i możesz zobaczyć taki JSON, jak pokazano.
Tam jest Lokalizacja słownik z Nazwa klucz składający się z nazwy kraju i miasta.

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

wprowadź opis obrazu tutaj

UWAGA: - Musisz również upewnić się, że podałeś miejsce na swoim profilu na Facebooku i upubliczniłeś je.

wprowadź opis obrazu tutaj

Kiedy uruchomisz aplikację z uprawnieniami, otrzymasz uwierzytelnienie na Facebooku z takim ekranem ostrzegawczym.

wprowadź opis obrazu tutaj

Poprosi o Recenzja logowania ponieważ niektóre uprawnienia wymagają przeglądu tutaj. Podstawowe uprawnienia udostępniane bezpłatnie przez Facebooka, które nie wymagają żadnej recenzji, to: -

wprowadź opis obrazu tutaj

ale do celów testowych możesz uzyskać lokalizacjębez recenzji. Ale zanim prześlesz aplikację na iOS do Appstore, musisz przejść weryfikację logowania do Facebooka, aby uniknąć tego komunikatu ostrzegawczego i pobrać lokalizację użytkownika.


0 dla odpowiedzi nr 2

Jeśli potrzebujesz osobno kraju, zawsze możesz użyć lokalizacji {lokalizacja}

    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
}
})