尝试与 Swift 结交共同好友 Facebook 时为零

Nil while trying to get mutual friends Facebook with Swift

我正在尝试获取共同好友的数量,但无济于事:

func verifyUser(slot: Int) {
    let userManager = self.userManager
    var currentUserSlot = userManager.currentUserSlot

    userManager.switchToNoActiveUser()

    var behavior: FBSessionLoginBehavior = (slot == 0) ? FBSessionLoginBehavior.WithFallbackToWebView : FBSessionLoginBehavior.ForcingWebView
    var session: FBSession = userManager.switchToUserInSlot(slot)

        session.openWithBehavior(behavior, completionHandler:{(innerSession: FBSession!, status: FBSessionState, error: NSError?) -> Void in
            if (error != nil) {
                println("Could not open session")
                userManager.switchToNoActiveUser()
            } else {
                println("Succes")
                println("Is session open: \(session.isOpen)")
                var params: Dictionary<String, AnyObject> = Dictionary()
                params["fields"] = "context.fields(mutual_friends)"

                FBRequestConnection.startWithGraphPath("me", parameters: params, HTTPMethod: "GET", completionHandler: {(connection: FBRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
                    println("MUTUAL: \(result)")
                })

                self.updateSession(slot)
            }
        })
 }

我是运行这个代码:

FBRequestConnection.startWithGraphPath("me", parameters: params,     HTTPMethod: "GET", completionHandler: {(connection: FBRequestConnection!,     result: AnyObject!, error: NSError!) -> Void in
                println("MUTUAL: \(result)")
            })

会话成功打开后。但我不断收到此错误:FBSDKLog:请求端点错误 'me':必须为调用此端点指定打开的 FBSession。 相互:无

我只是不明白为什么,因为我刚刚成功打开了一个会话,所以我这里做错了什么?

谢谢!

多亏了@Sam,我才得以完成工作,但是我该如何以更优雅的方式获得共同朋友的数量:

var mutualFriends: AnyObject? = (result.objectForKey("context") == nil) ? nil : result.objectForKey("context") var mutualfriends2: AnyObject? = mutualFriends?.objectForKey("mutual_friends") var mutualfriends3: AnyObject? = mutualfriends2?.objectForKey("summary") var numberOfMutualFriends: Int? = mutualfriends3?.objectForKey("total_count") as? Int println("MUTUAL: \(numberOfMutualFriends)")

谢谢!

问题可能是 startWithGraphPath 函数默认使用 FBSession.activeSession()。您正在打开一个会话,但没有为请求使用新打开的会话。

尝试在调用 startWithGraphPath 之前添加此内容:

FBSession.setActiveSession(innerSession)

或者,如果您不想将其设置为活动会话,则可以调用 initWithSession:graphPath:parameters:HTTPMethod:innerSession。有关该功能的更多信息,请参阅 the documentation