2016-05-08 18 views
6

Sto tentando di recuperare l'immagine da una pagina di Facebook. Ho recuperato l'ID della pagina e ora ho bisogno di usare questo ID per ottenere l'immagine dalla pagina. Sto usando il seguente codice:Pagina Facebook Immagine restituita null in FBSDKGraphRequest

let pictureRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: picPath, parameters: ["fields" : "data"], HTTPMethod: "GET") 
          pictureRequest.startWithCompletionHandler({ (connection: FBSDKGraphRequestConnection!, result, error) -> Void in 
           if (error != nil) { 
            print("picResult: \(result)") 
           } else { 
            print(error!) 
           } 
          }) 

Non ricevo un errore, ma il mio risultato è nullo. Il picpath assomiglia a questo:

/110475388978628/picture 

Ho copiato il codice direttamente dal here ma non funziona. Qualche idea su cosa sto facendo male? Ho il token di accesso perché sono in grado di ottenere l'ID della pagina tramite la richiesta del grafico

risposta

1

non esiste alcun parametro chiamato "campi". Sostituire [ "campi": "Dati"] con nil

let pictureRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: picPath, parameters: nil, HTTPMethod: "GET") 
          pictureRequest.startWithCompletionHandler({ (connection: FBSDKGraphRequestConnection!, result, error) -> Void in 
           if (error != nil) { 
            print("picResult: \(result)") 
           } else { 
            print(error!) 
           } 
          }) 
1

È possibile utilizzare lo strumento API Explorer Grafico per contribuire a costruire la richiesta grafico prima: https://developers.facebook.com/tools/explorer

In questo caso, vedrai che si vuole il percorso grafico per essere solo l'oggetto id (cioè, il vostro picPath dovrebbe essere solo 110475388978628 e i parametri dovrebbero essere [ "fields" : "picture"].

Allora ti consigliamo di analizzare il "URL" fuori dal result["picture"]["data"]["url"].

2

Se vuoi ottenere l'immagine nella stessa richiesta del resto delle informazioni degli utenti, puoi fare tutto in una richiesta di grafico.

let request = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email, picture.type(large)"]) 
request.startWithCompletionHandler({ (connection, result, error) in 
    let info = result as! NSDictionary 
    if let imageURL = info.valueForKey("picture")?.valueForKey("data")?.valueForKey("url") as? String { 
     //Download image from imageURL 
    } 
})