Ich habe die FB neueste SDK (nicht swift) integriert und Login funktioniert gut. Alles, was ich wissen müssen, wie ich die Grafik Antwortdaten seit seiner nicht eine gültige JSON analysieren SieWie verarbeitet man die Antwortdaten von FBSDKGraphRequest in Swift 3
Arbeitscode:
func configureFacebook()
{
login.readPermissions = ["public_profile", "email", "user_friends"];
login.delegate = self
}
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
print("Login buttoon clicked")
let graphRequest:FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"first_name,email, picture.type(large)"])
graphRequest.start(completionHandler: { (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
print("Error: \(error)")
}
else
{
print(result)
}
})
}
Mit Ausgabe:
Login button clicked
Optional({
"first_name" = KD;
id = 10154CXXX;
picture = {
data = {
"is_silhouette" = 0;
url = "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/XXXn.jpg?oh=a75a5c1b868fa63XXX146A";
};
};
})
So welchem Format soll ich die umwandeln über Daten, um Werte wie URL oder first_name usw. zu erhalten.
Auch ich band, das zu NSDictionary umwandelt und erhielt Fehler:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
print("Login buttoon clicked")
let graphRequest:FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"first_name,email, picture.type(large)"])
graphRequest.start(completionHandler: { (connection, result, error) -> Void in
if ((error) != nil)
{
print("Error: \(error)")
}
else
{
do {
let fbResult = try JSONSerialization.jsonObject(with: result as! Data, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
print(fbResult.value(forKey: "name"))
} catch {
print(error)
}
}
})
}
Dies scheint die einfachste zu sein. Endgültiger Code für mich. Lassen Sie Daten: [String: AnyObject] = Ergebnis als! [String: AnyObject] let urlData = data ["Bild"] ?. value (forKey: "data") as! [String: AnyObject] let url = urlData ["url"]! –
Profil Profil versucht Profil wie früher, aber jetzt nicht zurückgegeben, obwohl Info dort ist: 'profilePictureURLStr = Daten [" picture.data.url "] als? String'. Etwas stimmt nicht. –
Verwenden Sie swiftyJSON? –