0

ユーザーのプロフィール写真を受信しようとすると、写真は疑問符の付いた白いボックスを返しますか?

私のコードは次のとおりです。

func getProfilePic(fid: String) -> SKTexture? {
  let imgURL = NSURL(string: "http://graph.facebook.com/" + fid + "/picture?type=large")
  let imageData = NSData(contentsOfURL: imgURL!)
  let imageUI = UIImage(data: imageData!)
  let image = SKTexture(image: imageUI!)
  return image
}

func getFBUserData() {
  if((FBSDKAccessToken.currentAccessToken()) != nil) {
    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email, picture"]).startWithCompletionHandler({ (connection, result, error) -> Void in
      if (error == nil){
        print(result)
        if let userData = result as? NSDictionary {
          personalUserID = userData["id"] as! String
        }
      } else {
        print("error")
      }
    })
  }
  picture.texture = getProfilePic("\(personalUserID)")

正しい画像を表示するにはどうすればよいですか?

4

1 に答える 1

2

あなたのプロフィール写真は一般公開されていないと思います。リクエストでアクセス トークンを提供していないため、リクエストは無許可として処理されます。つまり、世間の目で見られるものだけが表示されます。

それを修正するには:

func getProfilePic(fid: String) -> SKTexture? {
    let imgURL = NSURL(string: "http://graph.facebook.com/" + fid + "/picture?type=large&access_token=" + FBSDKAccessToken.currentAccessToken().tokenString)
    let imageData = NSData(contentsOfURL: imgURL!)
    let imageUI = UIImage(data: imageData!)
    let image = SKTexture(image: imageUI!)
    return image
}

また、https現在の API バージョンv2.5を使用してリクエストを行う必要があります。そうしないと、Facebook が変更を加えたときにコードがすぐに壊れる可能性があります。したがって、それを念頭に置いて:

func getProfilePic(fid: String) -> SKTexture? {
    let imgURL = NSURL(string: "https://graph.facebook.com/v2.5/" + fid + "/picture?type=large&access_token=" + FBSDKAccessToken.currentAccessToken().tokenString)
    let imageData = NSData(contentsOfURL: imgURL!)
    let imageUI = UIImage(data: imageData!)
    let image = SKTexture(image: imageUI!)
    return image
}

これでうまくいくはずです。

于 2016-03-11T17:04:48.453 に答える