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 № 1Twoje 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.
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"
}
}
UWAGA: - Musisz również upewnić się, że podałeś miejsce na swoim profilu na Facebooku i upubliczniłeś je.
Kiedy uruchomisz aplikację z uprawnieniami, otrzymasz uwierzytelnienie na Facebooku z takim ekranem ostrzegawczym.
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: -
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
}
})