使用Facebook SDK(iOS)

时间:2016-01-31 23:36:30

标签: ios facebook-graph-api swift2 facebook-sdk-4.0

在我的应用程序的这一部分中,用户登录到Facebook并正确使用CLLocationManager检索当前位置。下一步是搜索最近的地方,但是当我这样做时,我得到了这个错误......

  

错误Domain = com.facebook.sdk.core Code = 8"我们无法确定   这个位置的坐标。检查您的纬度和经度是否正确   在范围内,并验证位置的格式。"

以下是两种方法,一种是搜索,另一种是将带有设置地点ID的示例地点发布到当前用户的Feed(工作正常),但显然我希望地点ID为ID最近的地方。由于我在它们旁边设置了一个断点,因此纬度和经度都在那里。

查找最近的地方方法......

func findNearestPlaces() {

    let params = NSMutableDictionary(capacity: 4)

    params.setObject(String(format: "%@, %@", self.latitude!, self.longitude!), forKey: "center")
    params.setObject("place", forKey: "type")
    params.setObject("100", forKey: "distance")
    params.setObject("name", forKey: "fields")

    let graphRequest = FBSDKGraphRequest.init(graphPath: "/search", parameters: params as [NSObject : AnyObject], HTTPMethod: "GET")
    graphRequest.startWithCompletionHandler { (connection, response, error) -> Void in

        if error != nil {
            print(error)
        }

        else if let response = response {

            print(response)
        }
    }

}

使用虚拟地点ID检查方法(就像我说的,工作,但只是包含它以供进一步参考)

func checkIn() {

    if FBSDKAccessToken.currentAccessToken() != nil {

        if FBSDKAccessToken.currentAccessToken().hasGranted("publish_actions") {

            let parameterDictionary = NSMutableDictionary()
            parameterDictionary.setObject("This is a test, I'm building an app!", forKey: "message")
            parameterDictionary.setObject("110503255682430", forKey: "place") //TEST <<!

            let graphRequest = FBSDKGraphRequest.init(graphPath: "/me/feed", parameters: parameterDictionary as [NSObject : AnyObject], HTTPMethod: "POST")

            graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

                if error != nil {
                    print(error)
                }

                else {

                    print(result)
                }
            })
        }
    }

    else {

        let loginManager = FBSDKLoginManager()
        loginManager.logInWithPublishPermissions(["publish_actions"], fromViewController: self, handler: { (result, error) -> Void in

        if error != nil {
            print(error)
        }

        else if let result = result {
            print(result)

        }
        })
    }
}

有什么想法吗?我真是太近了!像往常一样,非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

我要回答我自己的问题......用%f替换%@,它完美无缺!