2016-02-19 113 views
0

我找不到解决方案来获取Facebook个人资料图片的网址。从Facebook获取个人资料图片url sdk

当我通过Facebook登陆我用这种方法来获得与Facebook图形API配置文件信息:

func getFBUserData() { 
    // Create request for user's Facebook data 
    let request = FBSDKGraphRequest(graphPath:"me", parameters:["fields": "id, name, first_name, middle_name, last_name, email, picture.type(large)"]) 

    // Send request to Facebook 
    request.startWithCompletionHandler { 

     (connection, result, error) in 

     if error != nil { 
      // Some error checking here 
     } 
     else { 

      print(result) 


      if let userData = result as? [String:AnyObject] { 

       // Access user data 
       let username = userData["first_name"] as! String 


      } 

     } 

    } 
} 

我可以很容易地解析FIRST_NAME,电子邮件ECT,但是当涉及到图片的URL我不知道如何感受这些数据。 这是我从respons Facebook的API:

{ 
    email = "[email protected]"; 
    "first_name" = Loc; 
    id = 123456765432457654; 
    "last_name" = Le; 
    "middle_name" = Dai; 
    name = "Loc Dai Le"; 
    picture =  { 
     data =   { 
      "is_silhouette" = 0; 
      url = "https://scontent.xx.fbcdn.net/hprofile-xat1/v/t1.0-1/p200x200/12246670_10207807554127440_7406917875415466413_n.jpg?oh=d394b200091f8973645300054e6b32b8&oe=572E6626"; 
     }; 
    }; 
} 

回答

0

UPDATE

self.dict = result as NSDictionary    
     println(self.dict) 
     NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as String) 

请试试这个

+0

感谢您的回答@KamleshShingarakhiya,但它不起作用 –

+0

任何错误或任何输出? –

+0

“可选类型AnyObject的值?”不打开;你的意思是使用'!' og'?'?“ - 错误在第一行var imageString ... –

1

使用imageURLForPictureMode:在FBSDKProfile类的大小便捷方法。

let pictureURL = FBSDKProfile().imageURLForPictureMode(.Normal, size: CGSize(width: 100, height: 100)) 
0

这是我做的:

func getProfilePicture(account: ACAccount, handleSuccess: UIImage ->(), finally:() ->()) { 
    let r = SLRequest(forServiceType: SLServiceTypeFacebook, requestMethod: .GET, URL: NSURL(string: "https://graph.facebook.com/v2.5/me/picture")!, parameters: nil) 
    r.account = account 
    r.performRequestWithHandler({(data, urlresponse, error) in 
     if error !== nil { 
      //return 
     } else if urlresponse.statusCode == 200 { 
      handleSuccess(UIImage(data: data)!) 
     } else { 
      print("Unexpected status code \(urlresponse.statusCode)") 
     } 
     finally() 
    }) 
} 

如果你真的想你可以获取对原请求的图片,你所做的,但它是一个大量数据的所以这不是如何我会接近它。我想在你的情况下,这将意味着UIImage(data: userData["picture"]),虽然你可能需要将其转换为NSData。

相关问题