gpt4 book ai didi

ios - 无法发出多个 FBSDKGraphRequest

转载 作者:行者123 更新时间:2023-11-30 12:58:33 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从 Facebook 页面读取帖子:

class FacebookGraphAPI {
class func getPosts(fromPageWithID pageId: String, parameters: [String: AnyObject]?, completion: @escaping ([FacebookPost]?, Error?) -> Void) {
self.getAccessToken { (accessToken, error) in
if error != nil {
completion(nil, error)
return
}

let params = ["access_token": accessToken, "fields": "created_time,message,story"]

if let request = FBSDKGraphRequest(graphPath: "\(pageId)/posts", parameters: params) {
request.start { (connection, result, error) in
if error != nil {
completion(nil, error)
return
}

guard let resultDict = result as? [String: AnyObject],
let data = resultDict["data"] as? NSArray
else {
completion(nil, nil)
return
}

var posts = [FacebookPost]()

for item in data {
posts.append(FacebookPost(dict: item as! NSDictionary))
}

completion(posts, nil)
}
}

completion(nil, nil)
}
}

class func getAccessToken(completion: @escaping (String?, Error?) -> Void) {

let clientId = Bundle.main.object(forInfoDictionaryKey: "FacebookAppID") as! String
let clientSecret = Bundle.main.object(forInfoDictionaryKey: "FacebookAppSecret") as! String

let params = ["client_id": clientId, "client_secret": clientSecret, "grant_type": "client_credentials", "fields": "access_token"]

if let request = FBSDKGraphRequest(graphPath: "oauth/access_token", parameters: params) {
request.start(completionHandler: { (connection, result, error) in
if error != nil {
completion(nil, error)
return
}

guard let resultDict = result as? [String: AnyObject] else {
completion(nil, nil)
return
}

let accessToken = resultDict["access_token"] as! String
completion(accessToken, nil)
})
}
}
}

然后我使用例如以下内容:

FacebookGraphAPI.getPosts(fromPageWithID: "{page-id}", parameters: ["limit": 5 as AnyObject]) { (posts, error) in
guard error == nil else { return }

...
}

我收到的错误是:-[_SwiftValue length]:在第二个 FBSDKGraphRequest 启动时发送到实例的无法识别的选择器

我尝试删除第一个 FBSDKGraphRequest,然后我至少在completionHandler 中得到响应。看起来好像我无法发出多个 FBSDKGraphRequest。

非常感谢任何帮助。

提前致谢!

最佳答案

当我思考错误并记住 FBSDKCoreKit 框架是用 Objective-C 编写的时,我终于找到了问题。

我所需要做的就是将参数数组内的 accessToken 转换为 NSString

我更改了以下内容:

let params = ["access_token": accessToken, "fields": "created_time,message,story"]

致:

let params = ["access_token": accessToken! as NSString, "fields": "created_time,message,story"]

关于ios - 无法发出多个 FBSDKGraphRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com