ios - 给定照片 ID : Facebook Graph API for iOS (Swift) 获取照片 URL

标签 ios swift facebook facebook-graph-api

我的问题归结为:获取给定照片 ID 的照片 URL。最终,我需要对标记了我的 iOS 应用程序用户的所有照片执行此操作。我可以使用以下代码获取照片的 ID:

// Create request for user's Facebook data
    let request = FBSDKGraphRequest(graphPath:"me", parameters:["fields": "photos"])

    request.startWithCompletionHandler {

        (connection, result, error) in

        if error != nil { }
        else if let userData = result as? [String:AnyObject] {
            let userPhotos = userData["photos"]
        }
    }

在返回的用户数据中,我可以访问每张照片的 ID。现在,我定义了一个函数,它应该(理想情况下)返回给定 ID 的照片的 URL。但是,我真的不知道如何正确调用 Facebook Graph API。这就是我所拥有的(注意:硬编码照片 ID)。

 // Create request for user's Facebook data
    let request = FBSDKGraphRequest(graphPath:"/{photo-id}?id=xxxxxxxxxxxxxxxxx", parameters:["fields": "link"])

    request.startWithCompletionHandler {

        (connection, result, error) in

        if error != nil { }
        else if let userData = result as? [String:AnyObject] {
            let link = userData["link"]
            print(link)
        }
    }

我非常确信 graphPath 参数是错误的。我基于此做了一些“智能”猜测:https://developers.facebook.com/docs/graph-api/reference/photo/

如果您能给我任何帮助,我们将不胜感激。谢谢!

最佳答案

好的,这是一个简单的答案,感谢@user2585945 上面的回答

导入 UIKit

class FacePhotosViewController: UIViewController{

    @IBOutlet weak var imgTest: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()


        if (FBSDKAccessToken.currentAccessToken() != nil)
        {
            print("We are good!")
        }

        let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"photos,picture"])
        graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

            if ((error) != nil)
            {
                // Process error
                print("Error: \(error)")
            }
            else
            {
                print(result)

                let resultdict = result.objectForKey("photos") as! NSDictionary
                let data : NSArray = resultdict.objectForKey("data") as! NSArray

                for i in 0..<data.count {
                    let valueDict : NSDictionary = data[i] as! NSDictionary
                    let id = valueDict.objectForKey("id") as! String
                    let created_time = valueDict.objectForKey("created_time") as! String
                    print("id: \(id)  created_time: \(created_time)  ")

                }
            }

         })




        let graphRequestPhoto : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "10156292340905363?type=large", parameters: ["fields":"picture, name, album, place"])
        graphRequestPhoto.startWithCompletionHandler({ (connection, result, error) -> Void in

            print(result)

            if ((error) != nil)
            {
                // Process error
                print("Error: \(error)")
            }
            else if let userData = result as? [String:AnyObject] {
                let url = userData["picture"] as? String
                print("link: \(url)")

                let imgURL: NSURL! = NSURL(string: url!)

                //lets' download profile photo
                let session = NSURLSession.sharedSession()//session
                let request: NSURLRequest = NSURLRequest(URL: imgURL!)//request
                let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in //session calls the request

                    if let noerror = data {
                        dispatch_async(dispatch_get_main_queue()) {
                            let image = UIImage(data: noerror)
                            self.imgTest.image = image
                        }
                    }
                    else {
                        print("Error: \(error!.localizedDescription)", terminator: "")
                    }
                }

                dataTask.resume() 
            }


         })








    }
}

关于ios - 给定照片 ID : Facebook Graph API for iOS (Swift) 获取照片 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35168578/

相关文章:

c# - Azure 移动服务 - Facebook 注销

ios - UIView alpha 值问题

c++ - 当我从 C++ 中的文件中读取时,显示数字的次数比它应该的多

sorting - Swift AddressBook - 复制源中的所有人员,但存在排序问题

ios - 当我返回页面时,更改 TableView 的数字和单元格数据

ios - 使用相机的图像选择器未使用相机图像

ios - 如何快速从通用数组中搜索特定元素,例如 [AnyObject]?

iOS/Xcode : is there a difference between running the App on an iPhone while connected to Xcode compared to opening the installed App afterwards?

html - 在 Cloudfront 的页面上托管 Facebook iframe

c# Selenium WebDriver - 如何禁用 Facebook 页面上的通知?